gpt4 book ai didi

java - ConcurrentHashMap.putIfAbsent 的性能

转载 作者:搜寻专家 更新时间:2023-10-31 20:15:39 31 4
gpt4 key购买 nike

his talk about Effective Java在 54:15 Joshua Bloch 建议在 putIfAbsent 之前使用 get 以提高性能和并发性。这让我想到了为什么这个优化还没有像

public V BETTER_putIfAbsent(K key, V value) {
V result = get(key);
if (result!=null) return result;
return ORIGINAL_putIfAbsent(key, value);
}

最佳答案

我猜这是因为性能取决于使用模式。对于大多数 putIfAbsent 调用都会成功的 map ,然后用 get 保护它会更慢。对于 putIfAbsent 经常失败的映射,用 get 保护它会更快。

通过不对常见的失败案例进行优化,您可以自由选择哪种方法对您的 map 来说更快。

在视频的例子中,putIfAbsent 通常会失败,所以用 get 保护它会更快。

关于java - ConcurrentHashMap.putIfAbsent 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684252/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com