微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决ConcurrentHashMap compute() 方法线程安全吗?

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

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

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。