文章目录
- 概述
- 快速失败的工作原理
- 示例代码
- 注意事项
概述
在Java中,Iterator
迭代器提供了一种称为“快速失败”(Fail-Fast)的机制来处理多线程并发修改集合的情况。这种机制是为了保证集合在迭代过程中的结构性质不被意外改变,从而避免产生不确定的行为或抛出异常。
快速失败的工作原理
当创建一个迭代器后,迭代器会检查集合的结构是否被修改。如果在迭代过程中,集合被其他线程修改了(比如添加、删除了元素),迭代器就会立刻抛出ConcurrentModificationException
异常,终止迭代过程。这是通过维护一个名为modCount
的变量来实现的,该变量记录集合被修改的次数。
- 集合类(如
ArrayList
,HashMap
等)有一个内部的modCount
字段,每次调用修改集合的方法(如add
,remove
等)时,都会增加这个计数器。 - 迭代器在创建时会记录集合的当前
modCount
值,在迭代过程中,每次迭代操作前都会检查当前集合的modCount
是否与迭代器记录的值相等,如果不等,则抛出ConcurrentModificationException
异常。
示例代码
List