方法 ConcurrentHashMap.putAll(Map) 应该是原子的吗?
我在文档中找不到它,并且 ConcurrentMap 界面中没有提到它,所以我猜答案是否定的。我要求它确定,因为说实话,如果该操作不是原子的,那就没有意义了。
如果它不是原子的,那么支持多个项目的原子插入的最佳方法是什么?回到好旧的同步?
方法 ConcurrentHashMap.putAll(Map) 应该是原子的吗?
我在文档中找不到它,并且 ConcurrentMap 界面中没有提到它,所以我猜答案是否定的。我要求它确定,因为说实话,如果该操作不是原子的,那就没有意义了。
如果它不是原子的,那么支持多个项目的原子插入的最佳方法是什么?回到好旧的同步?
在文档的顶部
putAll
对于和等聚合操作clear
,并发检索可能仅反映插入或删除某些条目。
putAll()
不是原子的,而只是保证每个个体put()
都是原子的。
要原子化它,你必须使用同步,是的
不仅如此:您必须在每个公共 map 方法周围放置一个同步块,从而降低并发性。