美文网首页
为什么HashMap不支持同步?HashMap如何实现同步

为什么HashMap不支持同步?HashMap如何实现同步

作者: 糯米团子123 | 来源:发表于2022-07-07 17:19 被阅读0次
  1. HashMap不支持同步的原因
    1.1 多个线程同时添加元素时,如果两个key的hash值一样,根据HashMap实现原理,这两个key会添加到数组的同一位置,这样会导致其中一个线程添加的数据被覆盖。
    1.2 如果多个线程检测到HashMap元素个数超过阈值,会导致多个线程触对发HashMap的扩容,都会重新计算元素位置并且复制数据,但是最终只能有一个线程的扩容成功,其他线程都会丢失,导致各自添加的数据也会丢失。

  2. HashMap实现同步的方法
    2.1 使用Conllections.synchronizedMap()方法
    2.2 使用ConcurrentHashMap
    2.3 对操作Map的方法实现一个对象锁

在开发过程中,首选ConcurrentHashMap,因为其不需要锁定整个对象,性能更好。

相关文章

网友评论

      本文标题:为什么HashMap不支持同步?HashMap如何实现同步

      本文链接:https://www.haomeiwen.com/subject/maepbrtx.html