gpt4 book ai didi

java - Iterator.next() 上的 ConcurrentModificationException

转载 作者:行者123 更新时间:2023-11-29 03:34:30 26 4
gpt4 key购买 nike

我在以下代码中收到 ConcurrentModificationException:

private static List<Task> tasks = new LinkedList<Task>();
...
public void doTasks(){
synchronized(tasks){
Iterator<Task> it = tasks.iterator();

while(it.hasNext()){
Task t = it.next(); < Exception is always thrown on this line.

if(t.isDone()){
it.remove();
} else {
t.run();
}
}
}
}
...
public void addTask(Task t){
synchronized(tasks){
tasks.add(t);
}
}
...
public void clearTasks(){
synchronized(tasks){
tasks.clear();
}
}

对象“tasks”没有在类中的其他任何地方使用。我不确定为什么会出现异常。任何帮助将不胜感激。

最佳答案

这是你的问题:

if(t.isDone()){
...
} else {
t.run(); // probably changing the task, so consequently the list tasks
}

编辑:您不能更改循环中的 tasks 列表。查看ConcurrentModificationException documentation了解更多详情。

干杯!

关于java - Iterator.next() 上的 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16245587/

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