gpt4 book ai didi

java - 循环中的 ConcurrentModificationException

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

我在一个单独的线程(不是 UI 线程)上运行这段代码

strains = new ArrayList<Strain>();
for (Breeder b : breeders) {
for (Strain s : b.getStrains()) {
strains.add(s);
}
}

它有时会导致 ConcurrentModificationException。我知道我不能在我正在迭代的集合中添加或删除对象,但在这个 fragment 中我没有迭代菌株。我哪里错了?谢谢

最佳答案

Synchronize您的访问权限。这种卡住当前的breeder对象,这样它就不会在任何其他线程中被修改。尝试这样做的方法将被阻止。阻塞意味着它们只是等待(如 System.sleep(x)),直到另一个线程中的 synchronized block 已被处理。

synchronized(breeders) {
for (Breeder b : breeders) {
for (Strain s : b.getStrains()) {
strains.add(s);
}
}
}

确保您还为其他线程访问 breeders 设置了 synchronized

关于java - 循环中的 ConcurrentModificationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15324310/

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