java的并发修改异常ConcurrentModificationException

快速失败(Fail-Fast)机制:对于线程不安全的集合对象的迭代器,如果在使用迭代器的过程中有其他线程修改了集合对象结构或者元素数量,那么将抛出ConcurrentModificationException,这就是所谓fail-fast策略。

在对集合使用iterator进行遍历的同时,如果直接调用集合对象的相关方法对其进行修改,如删除等操作时,会报ConcurrentModificationException异常。原因是通过集合对象调用其remove(xxx)等方法进行修改时,会导致modCount和expectedModCount的值不一致。然后在循环执行hashNext()方法时,就会检测到这种不一致然后抛异常。

为了避免这种异常,一种简单的操作是不使用集合对象.remove(xxx)的方法进行删除,而是用Iterator对象.remove()的方式删除。

 

具体分析可以参考这篇文章:https://www.cnblogs.com/dolphin0520/p/3933551.html

你可能感兴趣的:(java)