1)Fail-Fast
- 概念
Java集合的一种错误机制,当使用迭代器遍历集合的过程中,如果集合内元素发生变化,则会发生Fail-Fast抛出并发修改异常(Cocurrent Modification Exception)。
- 工作原理
迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/next()遍历下一个元素之前,都会检测modCount变量是否为expectedmodCount值,是的话就返回遍历;否则抛出异常,终止遍历。
2)Fail-Safe
- 工作原理
安全失败机制,在遍历时不是直接在集合内容上访问的,而是先复制原有集合内容,在拷贝的集合上进行遍历。所以对原有集合的修改并不会被迭代器检测到,不会抛出并发修修改异常ConcurrentModificationException。