分类: Java
2012-09-25 09:59:18
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();
}