你知道HashMap在高并发下可能会出现哪些问题吗( 七 )
注意并发问题并不是一定会产生,可以多执行几次,
我试验了上面的代码很容易产生无限循环,控制台不能终止,有线程始终在执行中,
这是其中一个死循环的控制台截图,可以看到六个线程顺利完成了put工作后销毁,还有四个线程没有输出,卡在了put阶段,感兴趣的可以断点进去看一下:
上面的代码,如果把注释打开,换用ConcurrentHashMap就不会出现类似的问题。
4.多线程put的时候可能导致元素丢失
HashMap另外一个并发可能出现的问题是,可能产生元素丢失的现象。
考虑在多线程下put操作时,执行addEntry(hash, key, value, i),如果有产生哈希碰撞,
导致两个线程得到同样的bucketIndex去存储,就可能会出现覆盖丢失的情况:
5.使用线程安全的哈希表容器
推荐阅读
- |传世群英版你那些你不知道的魅力
- 微软|微软Xbox 20周岁了,但这些密辛你未必知道
- 剑三|同为老五门,却势如水火!剑三奶花与天策的恩怨只有老玩家才知道
- 提莫|不看不知道,一看居然有点搞笑,原来女警的二技能名字是用来抓提莫的!!!!
- 热血传奇|热血传奇:神豪般的财力到底是何方神圣,你知道吗?
- 游戏推荐|11月游戏推荐,每年的游戏黄金月份,你还在不知道玩什么吗?
- 暗黑破坏神|暗黑2重制版你知道角色最高能获得多少技能点么?
- edg战队|“Viper不会离开EDG”,经纪人怒斥:我都不知道,你们就知道了?Nuguri不会加入DK
- 电子竞技|武将外号,你都知道几个?老玩家:这不是我先开始这么叫的吗!
- s11全球总决赛|炉石传说平衡补丁公布,2400点奥术之尘,不知道你能拿到多少?