首页 > 解决方案 > ConcurrentHashMap::computeIfAbsent 是每个键还是每个 ConcurrentHashMap 的原子?

问题描述

在调用 ConcurrentHashMap::computeIfAbsent 时,我使用了一个稍微昂贵的映射函数。当且仅当映射函数用于不同的键时,它们才能安全地并发执行。我想知道 mappingFunctions 是否针对不同的键同时执行。如果不是这种情况,每个mappingFunction 将一次执行一个,导致不必要的等待时间。为了解决这个问题,我需要编写更复杂的代码并使用 putIfAbsent。有谁知道mappingFunctions是否针对不同的键同时执行?

该文档指出:

整个方法调用以原子方式执行,因此每个键最多应用一次该函数。

这可能会或可能不会回答我的问题,具体取决于您的阅读方式

标签: concurrencylockingconcurrenthashmap

解决方案


推荐阅读