在 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/