组合putIfAbsent并替换为ConcurrentMap

组合putIfAbsent并替换为ConcurrentMap,第1张

组合putIfAbsent并替换为ConcurrentMap

您可以使用下面与您的代码等效的代码来使其短一些。我已经对数以千计的线程进行并发访问进行了一些压力测试:它按预期运行,并执行了许多重试(循环)(显然,您无法在并发世界中通过测试来证明其正确性)。

public void insertOrReplace(String key, String value) {    for (;;) {        String oldValue = concurrentMap.putIfAbsent(key, value);        if (oldValue == null) return;        final String newValue = recalculateNewValue(oldValue, value);        if (concurrentMap.replace(key, oldValue, newValue)) return;    }}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5003444.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存