Java容器类的关系图及线程安全
来源:优易学  2011-11-24 18:42:26   【优易学:中国教育考试门户网】   资料下载   IT书店
 1、Java容器类的关系图

  Collection

  ├List      接口

  │├LinkedList      链表

  │├ArrayList        顺序结构动态数组类

  │└Vector        向量

  │ └Stack      栈

  └Set

  Map

  ├HashTable

  ├HashMap

  └WeakHashMap List接口

  2、线程安全的和线程不安全的

  Vector和HashMap是线程安全的

  LinkedList、ArrayList和HashMap是线程不安全的

  由于同步需要花费时间,因此线程安全的执行效率要低于线程不安全的

  3、在多线程操作

  案例:多线程操作导致List报NoSuchElementException

  java.util.NoSuchElementException

  at java.util.LinkedList.remove(LinkedList.java:788)

  at java.util.LinkedList.removeFirst(LinkedList.java:134)

  at freemarker.core.RegexBuiltins.getPattern(RegexBuiltins.java:138)

  解决方法:

  调用Collections的同步List

  List<String> items = Collections.synchronizedList(new LinkedList<String>());

  public void remove() {

  if (!items.isEmpty()) {

  return items.remove(0);

  }

  }

  设置标志,同步

  LinkedList<String> items = new LinkedList<String>();

  String flag="abcdef";

  public void remove() {

  synchronized(flag){

  if (!items.isEmpty()) {

  return items.removeFirst();

  }

  }

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训