java HashMap的不安全分析

原理分析

1、在HashMap中,put()方法行代码modCount++,这个代码一看就是线程不安全。

2、在扩展过程中取值不准确,HashMap的扩展将创建一个新空数组,并将旧的项目填入新的数组,如果此时去取值,则可以获得null值。

实例

publicclassHashMapNotSafe{

publicstaticvoidmain(String[]args){
finalMap<Integer,String>map=newHashMap<>();

finalIntegertargetKey=65535;//65535
finalStringtargetValue="v";
map.put(targetKey,targetValue);

newThread(()->{
IntStream.range(0,targetKey).forEach(key->map.put(key,"someValue"));
}).start();

while(true){
if(null==map.get(targetKey)){
thrownewRuntimeException("HashMapisnotthreadsafe.");
}
}
}
}

以上就是java HashMap的不安全分析,希望对大家有所帮助。更多Java学习指路:Java基础

原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容