Collection 和 Map
fail-fast 和fail-safe
- fail-fast :
- 快速失败机制是Java集合框架中的一种错误检测机制,
- 当多个线程同时对集合中的内容进行修改时
- 增强的for循环边遍历边修改时
- 可能就会抛出
ConcurrentModificationException
异常。
-
java protected transient int modCount = 0; //在AbstractList中定义的变量 java int expectedModCount = modCount;//在ArrayList中的内部类Itr中定义的变量 final void checkForComodification() { if (modCount != expectedModCount) throw new ConcurrentModificationException(); } // 异常 for(Integer i : list){ list.remove(i); //运行时抛出ConcurrentModificationException异常 } // 正常 Iterator<Integer> it = list.iterator(); while(it.hasNext()){ it.remove(); }
- fail-safe:
- 安全失败: 在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。
java.util.concurrent
包下的容器都是安全失败