ConcurrentHashMap compute() 方法线程安全吗?

Is ConcurrentHashMap compute() method thread safe?

concurrentHashMapInstance.compute("Name", (key, val) -> {
     modifyValWithComplexLogic(val); 
     return val;
});

modifyValWithComplexLogic(val)(以及整个compute方法)关于val的线程安全吗?

总之,是的,但还是要小心。

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