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 items = Collections.synchronizedList(new LinkedList());
public void remove() {
if (!items.isEmpty()) {
return items.remove(0);
}
}
设置标志,同步
LinkedList items = new LinkedList();
String flag="abcdef";
public void remove() {
synchronized(flag){
if (!items.isEmpty()) {
return items.removeFirst();
}
}
}
标签:
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,尊重他人劳动成果
文章转载自:网络转载
0
好文不易,鼓励一下吧!