gpt4 book ai didi

java - 并发性:作为值的 HashMap 和 Lists

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

假设我有一个同步的 HashMap,它有一个字符串作为键和一个列表作为值。

Map<String, List<Object>> map = Collections.synchronizedMap(new HashMap<String, List<Object>>());

这个列表是线程安全的吗?例如,如果我这样做:

List<Object> list = map.get("whatever"); // Supposing I get a List
list.add(new Object()); // Would this be thread-safe?

如果不是,是否会使用 ConcurrentHashMap 而不是同步的?或者避免竞争条件的唯一方法是将其转换为 CopyOnWriteArrayList?

最佳答案

Collections.synchronizedMap 只会为生成的 map 提供线程安全性。如果你想让映射值线程安全,为什么不像这样装饰你的列表:

Collections.synchronizedList(yourList)

然后将它们添加到 map 中?

关于java - 并发性:作为值的 HashMap 和 Lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41050173/

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