java - List.iterator() 是线程安全的吗?

标签 java list collections iterator thread-safety

在 Java 中:List.iterator() 是否是线程安全的,即返回的迭代器是否反射(reflect)了列表在任何时候的当前状态,或者仅反射(reflect)列表在其发生时的状态创作?

最佳答案

List.iterator() 的行为未定义或与不同的 List 实现保持一致。

对于 ArrayList、LinkedList,如果在迭代列表时修改了列表,则可能会得到 ConcurrentModificationException。 (不能保证)避免此问题的方法是使用 synchronizedList() 并在迭代列表时锁定列表。

对于 Vector,集合是同步的,但迭代器不是线程安全的。

对于 CopyOnWriteArrayList,您在调用 iterator() 时会获得列表中元素的快照,此迭代器是线程安全的,您不需要使用任何锁定。注意:元素的内容可以改变。

关于java - List.iterator() 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5847939/

相关文章:

java - 无法读取单元测试成功率,可以读取jacoco生成的单元测试覆盖率

c++ - 将 QList append 到 QList<QList>

list - 在列表中找到比当前元素大 n 倍的第一个元素

angular - typescript 对象集

javascript - 我怎样才能更好地写出这份报告候选人的功能呢?

java - 使用 Dagger 2 进行方法注入(inject)

java - Android checkbox.isChecked() 不能正常工作

java - 在枚举内部搜索

python - 如何处理 Pytjon 列表列表中具有二进制值的样本的索引超出范围和无效语法?

java - 如何使用 Java 8 特性生成集合?