gpt4 book ai didi

java - 是否可以通过它的 key 同步 ConcurrentHashMap 更新?

转载 作者:行者123 更新时间:2023-11-30 10:03:55 26 4
gpt4 key购买 nike

我在 ConcurrentHashMap 上有大量的更新操作,我需要最小化同步来更新这个映射。

请看下面的代码。

public ConcurrentHashMap<String, Integer> dataMap = new ConcurrentHashMap<>();

public void updateData(String key, int data) {
if ( dataMap.containsKey(key)) {
// do something with previous value and new value and update it
}
}

例如,当一个线程使用键“A”调用updateData时,那么每隔一个使用键“A”调用updateData的线程都应该被阻塞,直到第一个线程完成.同时,我希望另一个线程尝试使用键“B”调用 updateData 同时运行。

我想知道是否有任何奇特的方法可以简单地用它的键锁定 hashMap。

最佳答案

我认为您正在寻找 compute method .

它接受一个给定键和当前值(如果还没有值则为 null)的函数,并且可以计算新值。

ConcurrentHashMap 保证对于给定的键,同一时间只有一个这样的函数运行。并发的第二个调用将阻塞,直到准备就绪。

关于java - 是否可以通过它的 key 同步 ConcurrentHashMap 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56141715/

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