迭代器的fail-safe和fail-fast
Fail-safe
Fail-safe迭代器在迭代过程中如果检测到集合的结构被修改,将抛出ConcurrentModificationException。这
种行为主要是通过迭代器中的一个modcount的计数器实现的,元素增or删都会发生变动。迭代器遍历时都会
检查这个计数器是否与size符合,不符合就抛错
主要集合
HashMap,Set,ArrayList等
优点:快速响应错误,帮助开发者早点知道错误
缺点:多线程环境下,如果不进行外部同步,容易抛错
Fail-fast
Fail-fast迭代器允许在迭代过程中对集合进行修改,不会抛concurrentModification异常但不会在原集合上修
改,而是在集合的副本上修改,即修改不会影响到迭代过程。这样的话这种机制在多线程环境下更加安全
copyonwrite….
concurrenthashmap….