【发布时间】:2017-06-17 21:16:53
【问题描述】:
我有一个 CHM
private ConcurrentHashMap<Integer,Integer>pR = new ConcurrentHashMap<>();
我有一个增加其值的方法
public void incrementPR(int count){
Integer value = this.pR.get(count);
if(value == null){
this.pR.put(count,1);
} else {
this.pR.put(count,value+1);
}
}
如果我触发 500 个并发请求,则使用 jmeter 从端点调用此方法,哈希映射孔的值不是 500,而是 437、430 等,它的行为不是线程安全的,我们如何实现线程安全性
【问题讨论】:
-
ConcurrentHashMap 不保证操作序列是原子的。
-
那么让hashmap线程安全同步是唯一的方法吗?
标签: java multithreading hashmap