ConcurrentHashMap中的.get()是线程安全的吗?

时间:2016-04-05 08:44:43

标签: java concurrenthashmap

ConcurrentHashMap是一个线程安全的集合,但如果ConcurrentHashMap.get("key")正在执行,同时地图引用本身也会发生变化。这会产生意想不到的结果还是仍然会得到旧值(这是预期的)。

1 个答案:

答案 0 :(得分:0)

如果正在更改地图参考,您仍然可以参考旧地图,它将从旧地图中获取,或者您对新地图的引用,它将从新地图中获取。

设置引用是一个原子操作,你永远不会有一个指向某个不存在的对象的引用。变更本身的可见性取决于您是否正确发布了新引用:如果您希望任何其他线程在更改后立即查看新引用,则它至少应该是易变的。