gpt4 book ai didi

java - 卡在 "java.util.ConcurrentModificationException"

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:44:03 25 4
gpt4 key购买 nike

这是我的代码:

// eventList is a LinkedList

public void run() {

Iterator<Event> it = eventList.iterator();
int size = eventList.size();

while(size > 0) {
while(it.hasNext()) {
Event e = it.next(); //flaged line

if(e.ready()) {
System.out.println(e);
e.action();
eventList.remove(e);
--size;
}
}
}
}

错误 java.util.ConcurrentModificationException 被抛出在标志线处 (Event e = it.next();)。您是否在我的代码中看到一个错误,该错误使抛出该异常的原因变得显而易见?

最佳答案

您正在修改 eventList,同时使用 eventList.remove() 迭代它。您不能这样做,否则 Iterator 将变得不可用。

只需将 eventList.remove(e) 替换为 it.remove() 就可以了。

此外,如果您的某个事件在第一次运行时没有准备好,您很容易陷入无限循环,因为 it.hasNext() 永远不会返回 true一旦返回false,但size也不会被修改。一个解决方案是将整个 Iterator it = ...移到第一个 while 循环中。

我还会修改外部 while 循环以使用 while (!e.isEmpty()) 而不是尝试跟踪 eventList< 的大小 手动。

关于java - 卡在 "java.util.ConcurrentModificationException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5645824/

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