迭代器的fail-safe和fail-fast

Fail-safe

Fail-safe迭代器在迭代过程中如果检测到集合的结构被修改,将抛出ConcurrentModificationException。这

种行为主要是通过迭代器中的一个modcount的计数器实现的,元素增or删都会发生变动。迭代器遍历时都会

检查这个计数器是否与size符合,不符合就抛错

主要集合

HashMap,Set,ArrayList等

优点:快速响应错误,帮助开发者早点知道错误

缺点:多线程环境下,如果不进行外部同步,容易抛错

Fail-fast

Fail-fast迭代器允许在迭代过程中对集合进行修改,不会抛concurrentModification异常但不会在原集合上修

改,而是在集合的副本上修改,即修改不会影响到迭代过程。这样的话这种机制在多线程环境下更加安全

copyonwrite….

concurrenthashmap….