线程安全的 Map对比

线程安全的本质:
ConcurrentHashMap:本质上是创建一个HashEntry数组去存储元素。分段去锁数据
Collections.synchronizedMap(): 本质上是返回一个 SynchronizedMap
主要的不同:
ConcurrentHashMap:更新的时候,它会锁住部分数据 ,其他的数据能够被其他线程调用
Collections.synchronizedMap():更新的时候锁住所有数据,其他线程无法介入,除非这个锁释放
注意:如果有许多更新操作,或者相对来说较多的读取操作,应该选择ConcurrentHashMap
另一个不同:
ConcurrentHashMap不会保留元素传入的顺序,和HashMap差不多

进一步说,ConcurrentHashMap能保证不会出现ConcurrentModificationException 这个异常,当一个线程在更新,
另一个线程也去访问的时候。
但是Collections.synchronizedMap()无法保证。

拓展:ConcurrentSkipListMap (since 1.6版本以后)兼顾上边两个的有点,有序和不报异常

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载:https://www.cnblogs.com/xdouby/p/6026618.html 在JDK 1.4...
    境里婆娑阅读 2,773评论 0 4
  • ConcurrencyMap 从这一节开始正式进入并发容器的部分,来看看JDK 6带来了哪些并发容器。 在JDK ...
    raincoffee阅读 650评论 0 0
  • 一直想把这段记忆分享给大家,最近一直比较忙,终于在上周末把我圣诞节游玩的照片整理了一下,下面说说我的感受吧,游玩地...
    C莨阅读 771评论 0 0
  • 哔哩哔哩的评论功能的体验创新 作者:朱宇轩,班级:工业设计1601,课程:交互设计方法研究,指导老师:余永海。 选...
    槿萌晓宇阅读 4,057评论 1 4
  • 我喜欢写啊,所以我不怕你们怎么对我。不接受,不赞同,都无所谓,我只不过在做我喜欢的事罢了,这与你们无关。
    官山海阅读 121评论 0 0

友情链接更多精彩内容