gpt4 book ai didi

java - 如何在不将条目分配给 hashmap 的情况下执行 ConcurrentHashMap.computeIfAbsent ?

转载 作者:行者123 更新时间:2023-12-01 19:33:48 27 4
gpt4 key购买 nike

有没有办法模拟ConcurrentHashmap.computeIfAbsent但不将条目分配给hashmap。我只需要当 HashMap 中的条目尚不存在时该方法生成的实例。这些都在线程中运行。所以我需要它是线程安全的。

我尝试过使用同步块(synchronized block),但这将保存整个哈希。我希望它像computeIfAbsent 一样。

synchronized(hashMap) {
if (hashMap.contains(key)) {
rs = hashMap.get(key);
} else {
rs = createNewInstance();
}
}


/* this would be perfect, but I don't what the new instance to be in the hashMap */
rs = hashMap.computeIfAbsent(key, k -> createNewInstance());

最佳答案

我想你可以这样做:

AtomicReference<Foo> holder = new AtomicReference<>();
map.computeIfAbsent(key, k -> {
holder.set(/* compute the value */);
return null; // returning null means no value is stored.
});
/* Use holder.get() to access value */

但这是一个非常不寻常的要求。

关于java - 如何在不将条目分配给 hashmap 的情况下执行 ConcurrentHashMap.computeIfAbsent ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58559986/

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