gpt4 book ai didi

java - 迭代器并发修改异常

转载 作者:行者123 更新时间:2023-12-01 06:34:19 25 4
gpt4 key购买 nike

如果在 doSomething() 中修改列表,此代码将抛出并发修改异常。是否可以通过将代码包含在某个同步块(synchronized block)中来避免它?

List l = Collections.synchronizedList(new ArrayList());

// normal iteration -- can throw ConcurrentModificationException
// may require external synchronization
for (Iterator i=list.iterator(); i.hasNext(); ) {
doSomething(i.next());
}

最佳答案

  • 如果您要从列表中删除一个项目,您可以通过调用 iterator.remove() 而不是 list.remove(iterator.next())

  • 如果您要添加一个项目 - 那么,创建一个迭代列表的副本并将其添加到那里

  • 如果上面的代码片段是同一方法的一部分,那么您不需要同步列表或同步块(synchronized block) - 没有其他线程可以访问本地列表。

关于java - 迭代器并发修改异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2250109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com