gpt4 book ai didi

java - 在 ConcurrentHashMap#computeIfAbsent 中更新其他键的后果

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:41:26 27 4
gpt4 key购买 nike

ConcurrentHashMap#computeIfAbsent 中的 Javadoc 说

The computation should be short and simple, and must not attempt to update any other mappings of this map.

但是,据我所知,在 mappingFunction 中使用 remove()clear() 方法效果很好。比如这个

Key element = elements.computeIfAbsent(key, e -> {
if (usages.size() == maxSize) {
elements.remove(oldest);
}
return loader.load(key);
});

mappingFunction 中使用 remove() 方法会带来什么不良后果?

最佳答案

这是一个不良后果的例子:

ConcurrentHashMap<Integer,String> cmap = new ConcurrentHashMap<> ();
cmap.computeIfAbsent (1, e-> {cmap.remove (1); return "x";});

此代码导致死锁。

关于java - 在 ConcurrentHashMap#computeIfAbsent 中更新其他键的后果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44224952/

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