Java ConcurrentSkipListMap的computeIfAbsent方法"原子应用一次"



ConcurrentSkipListMap computeIfAbsent方法的Javadoc说:"当值不存在时,不能保证该函数仅在原子上应用一次。有人可以向我解释一下"原子应用一次"是什么意思吗?

ConcurrentSkipListMap computeIfAbsentConcurrentHashMap相比如何?

我的理解是,当ConcurrentSkipListMap检测到其他线程进行了并发修改时,它有时必须在内部重做步骤。因此,传递给computeIfAbsent的函数可能会运行多次,因此它应该没有任何副作用。

我查看了代码,存在可以乐观地调用该函数的可能性,因此结果可能会被丢弃。

最新更新