gpt4 book ai didi

java - 判断 putIfAbsent 是否修改了 ConcurrentHashMap 的正确方法是什么?

转载 作者:行者123 更新时间:2023-11-29 04:35:21 26 4
gpt4 key购买 nike

我正在使用 putIfAbsent 将值添加到 ConcurrentHashMap,如果它们不作为原子操作存在的话。

这一切看起来都很好,但我真的可以判断是否真的添加了一个新对象。

我的最佳想法是检查 putIfAbsent 的返回值是否为 null,只要我们从不将 null 值放入映射(无论如何 ConcurrentHashMap 都不允许),它看起来应该可以工作,但我想知道如果有什么我错过了。或者这是正确的方法吗?

最佳答案

在这种情况下使用 CHM 的最佳方式如下:

Object o = concurrentMap.get(key);

if(o == null){
Object ret = concurrentMap.putIfAbsent(key, value);
if(ret == null){
o = ret;
}
}
return o;

get 调用是非阻塞的,因此您希望尽可能多地利用非阻塞调用。如果调用了很多,连续调用 putIfAbsent 会降低性能。

关于java - 判断 putIfAbsent 是否修改了 ConcurrentHashMap 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41856892/

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