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

在Java中:List.iterator()是线程安全的,即返回的迭代器是否在任何时候反映列表的当前状态,或仅在列表创建时的状态?
最佳答案
List.iterator()的行为没有被定义或与不同的List实现一致.

对于ArrayList,LinkedList,如果在迭代时修改列表,则可以得到ConcurrentModificationException. (这不保证)避免这个问题的方法是使用synchronizedList()并在迭代时锁定列表.

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

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

转载注明原文:java – 是List.iterator()线程安全吗? - 代码日志