gpt4 book ai didi

java - 原子地执行多个操作

转载 作者:行者123 更新时间:2023-12-04 20:13:17 26 4
gpt4 key购买 nike

我正试图找到一种以原子方式在 ConcurrentHashMap 上执行多个操作的方法。

我的逻辑是这样的:

if (!map.contains(key)) {
map.put(key, value);

doSomethingElse();
}

我知道有 putIfAbsent 方法。但如果我使用它,我仍然无法自动调用 doSomethingElse

除了诉诸同步/客户端锁定之外,还有什么方法可以做这些事情吗?

如果有帮助的话,我的例子中的 doSomethingElse 会非常复杂,涉及创建和启动一个线程来查找我们刚刚添加到 map 中的键。

最佳答案

If it helps, the doSomethingElse in my case would be pretty complex, involving creating and starting a thread that looks for the key that we just added to the map.

如果是这种情况,您通常必须进行外部同步。

在某些情况下(取决于 doSomethingElse() 期望映射的状态,以及其他线程可能对映射执行的操作),以下方法也可能有效:

if (map.putIfAbsent(key, value) == null) {
doSomethingElse();
}

这将确保对于任何给定的键只有一个线程进入 doSomethingElse()

关于java - 原子地执行多个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15501076/

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