gpt4 book ai didi

java - 并发修改异常

转载 作者:行者123 更新时间:2023-12-01 12:39:10 24 4
gpt4 key购买 nike

我的以下代码抛出并发修改异常,但我无法解决它。救命!

  {
long now = new Date().getTime();
Set<String> keyset = requests.keySet();
Iterator<String> iterator = keyset.iterator();

while (iterator.hasNext()) {
String packetId = iterator.next();
RequestHolder entry = requests.get(packetId);
if (entry.isExpired(now)) {
entry.getListener().onTimeout(packetId);
iterator.remove();
}
}
}

最佳答案

将您的代码替换为

long now = new Date().getTime();
Iterator<Map.Entry<String, RequestHolder>> iterator = requests.entrySet().iterator();

while (iterator.hasNext()) {
Map.Entry<String, RequestHolder> entry = iterator.next();
String packetId = entry.getKey();
RequestHolder requestHolder = entry.getValue();
if (requestHolder.isExpired(now)) {
requestHolder.getListener().onTimeout(packetId);
iterator.remove();
}
}

解决方案是迭代整个集合而不是键集,使用键集迭代器再次访问集合中的条目并从键集中删除条目

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

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