我有一个final ArrayList<RoutingTableEntry> routingTable = new ArrayList<>();
,可以多次访问。
但是我只能在以下线程中得到一个ConcurrentModificationException
的一个点:
Thread checkReplies = new Thread(() -> {
while (true) {
synchronized (routingTable) {
for (RoutingTableEntry entry : routingTable) { // throws it here
// do smth
}
}
// [...]
}
});
checkReplies.start();
即使
routingTable
已经同步,它也会在循环中引发异常。每个类仅执行一次该线程。有任何想法吗?
最佳答案
从对原始问题的评论开始,您将在迭代时删除routingTable
中的项目。
您不能这样做(即使routingTable
同步了)
for (RoutingTableEntry entry : routingTable) { // throws it here
// routingTable.remove(....);
}