我有一个并发HashMap实例,一些线程向其中添加条目。这些值是整数。
同时,其他线程希望检索映射中所有值的总和。我希望这些线程看到一致的值。但是,不必一定总是让他们看到最新的值。
以下代码线程安全吗?
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class MyClass {
private Map<Integer, Integer> values = new ConcurrentHashMap<>();
public void addValue(Integer key, int value){
values.put(key, value);
}
public long sumOfValues(){
return values
.values()
.stream()
.mapToInt(Integer::intValue)
.sum();
}
}
求和运算是否将根据一组一致的值进行计算?
当求和运算发生时,是否会阻止对put()的调用?
当然,我可以自己同步访问,甚至可以拆分读写锁,以允许并发读取访问和同步写访问,但是我很好奇在将并发HashMap用作集合实现时是否必要。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。