java基础线程的安全-解决快速失败和安全失败 快速失败(fail-fast) 为什么在用迭代器遍历时,修改集合就会抛异常时?
原因是迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变 modCount 的值。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/690a19c847b13a512f87f607381198a6.png)
部分代码,只供参考!
在使用迭代器对集合对象进行遍历的时候,如果 A 线程正在对集合进行遍历,此时 B 线程对集合进行修改(增加、删除、修改),或者 A 线程在遍历过程中对集合进行修改,都会导致 A 线程抛出 ConcurrentModificationException 异常。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/855e4119f97451c23d1ebaba6a1c12d1.png)