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

在Java中:List.iterator()线程安全吗,即返回的迭代器是在任何时候反映列表的当前状态,还是仅在创建列表时反映列表的状态?

回答:

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

对于ArrayList,LinkedList,如果在迭代列表时对其进行了修改,则可以获得ConcurrentModificationException。(这不能保证)避免此问题的方法是使用syncedList()并在遍历列表时锁定列表。

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

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

以上是 List.iterator()是线程安全的吗? 的全部内容, 来源链接: utcz.com/qa/428864.html

回到顶部