ConcurrentHashMap --兼顾线程安全和运行效率

本文详细介绍了ConcurrentHashMap的设计原理,包括其与HashMap的区别在于引入了Segment概念,使得并发性能提升。通过分析ConcurrentHashMap的读写过程,展示了其如何在保证线程安全的同时,通过细粒度锁实现高效的并发操作。同时,文章还讨论了size方法的实现,揭示了在面对并发修改时的处理策略。

ConcurrentHashMap –兼顾线程安全和运行效率

首先推荐一个网址(用漫画的形式讲解,图形结合通俗易懂很赞,文章的内容也是来源于此)

目录


ConcurrentHashMap与hashmap相比主要是多了一个segment的概念


  • segment是什么呢

    • Segment本身就相当于一个HashMap对象。
    • 同HashMap一样,Segment包含一个HashEntry数组,数组中的每一个HashEntry既是一个键值对,也是一个链表的头节点。
  • 单一的Segment结构如下:

    • 在ConcurrentHashMap中,这样的segment有2^n个,共同保存在一个名为segments的数组当中。
      这里写图片描述
  • 整个ConcurrentHashMap的结构如下:

    • 可以说,ConcurrentHashMap是一个二级哈希表。在一个总的哈希表下面,有若干个子哈希表。
    • 这样的二级结构,和数据库的水平拆分有些相似。
      这里写图片描述

ConcurrentHashMap这么设计有什么好处呢


  • 对比于hashtable,hashtable中采取synchronized包裹的方式使得达到线程安全的目的,但也因此极大的影响了他的速率
  • 而ConcurrentHashMa
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值