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

  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,因为其不需要锁定整个对象,性能更好。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容