gpt4 book ai didi

java - 避免 TreeMap ConcurrentModificationException?

转载 作者:搜寻专家 更新时间:2023-10-30 21:02:51 26 4
gpt4 key购买 nike

我正在调用返回 TreeMap 实例的函数,在调用代码中我想修改 TreeMap。但是,我得到了一个 ConcurrentModificationException

这是我的代码:

public Map<String, String> function1() {
Map<String, String> key_values = Collections.synchronizedMap(new TreeMap<String, String>());
// all key_values.put() goes here

return key_values;
}

我的调用代码是:

Map<String, String> key_values =Collections.synchronizedMap(Classname.function1());
//here key_values.put() giving ConcurrentModificationException

最佳答案

请注意,如果您使用迭代器,Collections.synchronizedMap永远保护您免受并发修改。此外,除非您从多个线程访问您的 Map,否则创建同步 map 是无用的。 没有传递给其他线程的局部范围的集合和变量不需要同步

我的猜测是,在您遗漏的代码中,您正在迭代 Map.entrySetMap.keySetMap.values 之一,并在迭代期间调用 put (在 for 循环内)。使用您展示的代码,这是唯一可能发生的方法。

关于java - 避免 TreeMap ConcurrentModificationException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13927572/

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