美文网首页
为什么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