【问题标题】:Is ConcurrentHashMap compute() method thread safe?ConcurrentHashMap compute() 方法线程安全吗?
【发布时间】:2021-04-10 15:52:35
【问题描述】:
concurrentHashMapInstance.compute("Name", (key, val) -> {
     modifyValWithComplexLogic(val); 
     return val;
});

对于valmodifyValWithComplexLogic(val)(以及整个compute 方法)线程安全吗?

【问题讨论】:

    标签: java thread-safety java.util.concurrent concurrenthashmap


    【解决方案1】:

    总之,是的,但你仍然需要小心。

    ConcurrentHashMap#compute 在即将更新的节点上的 synchronized 块中运行重映射函数,因此如果重映射函数本身可能在另一个资源上很活跃,并且您在多个键上调用它,您可能应该自己同步它,不要假设ConcurrentHashMap 会为你做。

    【讨论】:

    • ……并且不妨碍其他人同时做get(key).modifyingMethod(…)
    猜你喜欢
    • 2021-04-27
    • 2011-04-15
    • 2012-08-20
    • 2014-03-04
    • 2019-06-28
    • 1970-01-01
    • 2013-02-03
    • 2013-03-31
    • 1970-01-01
    相关资源
    最近更新 更多