如何解决ConcurrentHashMap compute() 方法线程安全吗?
concurrentHashMapInstance.compute("Name",(key,val) -> {
modifyValWithComplexLogic(val);
return val;
});
对于modifyValWithComplexLogic(val)
,compute
(以及整个val
方法)线程安全吗?
解决方法
总之,是的,但你仍然需要小心。
ConcurrentHashMap#compute
在它即将更新的节点上的 synchronized
块中运行重映射函数,因此如果重映射函数本身可能在另一个资源上很活跃,并且您在多个键上调用它,您可能应该自己同步它,而不是假设 ConcurrentHashMap
会为您同步。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。