小编Iva*_*van的帖子

Java嵌套ConcurrentHashMap是线程安全的吗?

所以这是实施..

public ConcurrentMap<String , ConcurrentMap<String, Object>> map = new ConcurrentHashMap<>();

public void put(String subKey, String key, Object value) {
    map.putIfAbsent(subKey, new ConcurrentHashMap<>());
    map.get(subKey).put(key, value);
}

public Object get(String subKey, String key) {
    return map.get(subKey) == null ? null : map.get(subKey).get(key);
}
Run Code Online (Sandbox Code Playgroud)

Put 看起来是线程安全的

  • PutIfAbsent 是原子操作。
  • 然后获取内部映射并放置值也应该是线程安全的,正如我认为的那样。

感谢您的任何澄清

java multithreading hashmap thread-safety

5
推荐指数
1
解决办法
2162
查看次数

标签 统计

hashmap ×1

java ×1

multithreading ×1

thread-safety ×1