为什么HashMap不是线程安全的?

2020-05-14  本文已影响0人  憨憨二师兄

2020-5-14

今天,我在这篇博文 JDK1.7和JDK1.8中HashMap为什么是线程不安全的? 中,温习了 HashMap 高频的面试考点之一:为什么HashMap是线程不安全的。

总体来讲:

  1. 在JDK1.7版本,扩容操作中进行数据转换采用的是链表的头插法,所以会造成链表成环,CPU百分之百,也就是我们所说的死循环问题。
  2. 在JDK1.8版本,虽然进行了优化,直接将原链表的数据放到新的数组,不会造成死循环,但是在putval操作中,还是有可能导致数据覆盖,所以也是线程不安全的。
  3. 解决方法,在多线程中应该使用 ConcurrentHashMap 替代 HashMap。
上一篇下一篇

猜你喜欢

热点阅读