首页 > 解决方案 > 从不同线程修改集合的元素时,迭代器会抛出 ConcurrentModificationException 吗?

问题描述

假设我们有ArrayList一些对象,我们正在遍历列表以读取每个对象的特征。ConcurrentModificationException如果列表中的对象在任何时候被另一个线程修改(在迭代器到达对象之前,它在对象上以及遍历对象之后),迭代器是否会抛出 a ?

在写这篇文章时,我意识到列表实际上包含对对象的引用,并且在修改对象时它们保持不变,所以迭代器不应该 throw ConcurrentModificationException,但是在迭代时读取的数据可能不一致,除非实际读取过程是同步的。谁能证实这一点?

标签: javaconcurrency

解决方案


推荐阅读