http://blog.chinaunix.net/uid/16979052.html
全部博文(286)
分类:
2012-09-28 09:11:24
原文地址:Java容器类的线程安全 作者:阿4is痞男
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)
解决方法:
List
public void remove() {
if (!items.isEmpty()) {
return items.remove(0);
}
}
LinkedList
String flag="abcdef";
public void remove() {
synchronized(flag){
if (!items.isEmpty()) {
return items.removeFirst();
}