星空网 > 软件开发 > Java

ConcurrentHashMap初探

  在项目中集合的使用非常频繁,最原始的就是数组Array,集合List提供了增加和删除的便利以及扩展,同时为了更快的搜寻效率,我们选择Map映射表。Map中我们用的最多的是hashMap,它提供了较好的查询速度,时间复杂度在O(1)。这些都是常规使用的集合。但是时常会有并发的要求,对于Map类,有一个HashTable可选,这个即实现了键值对的映射功能,同时也支持并发操作。HashTable实现原理主要是在hashMap上加了一个锁,操作hashtable时会对它上锁。这样效率就大大下降。对于低并发可能还不是很大影响,如果同时并发成百上千的访问,那么等待代价太大。

  基于以上问题,java.util.concurrent包提供了一个更好的并发映射集合类ConcurrentHashMap,从字面意思可以理解为并发的哈希映射表。那么为什么这个类的效率就逼HashTable高呢,下面来分析一下ConcurrentHashMap的结构。

ConcurrentHashMap初探

 

类中包含两个重要的内部类,一个为Segment,可以理解为一个段,每个段包含键值对

    一个为HashEntry,储存键值对实体。

实现原理是:每次put数据时,并不会对整个类进行加锁。首先获取的是键的哈希值,根据哈希值找到对应Segment,然后对segment进行加锁。这样当多个线程对该集合操作是,如果不是元素不是在同一个Segment内,那么它们之间并不会阻塞,自然效率较高。Segment 实现类似于HashMap.

  取数据则沿着存取路径反取,先找到具体Segment,然后在Segment中根据哈希值找键值对。

   这是对ConcurrentHashMap的初步了解,后面会对源码分析。




原标题:ConcurrentHashMap初探

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

字节和腾讯的猫鼠游戏,换位了吗?:https://www.kjdsnews.com/a/1667430.html
1.3亿人将购物!美国感恩节周末支出将创新高!:https://www.kjdsnews.com/a/1667431.html
[赛贝23-16044] Yk律所代理Okaysou商标起诉!已提出TRO![23-cv-16044]:https://www.kjdsnews.com/a/1667432.html
3个技术男辞职卖摩托车配件,年收入破1亿美金 | 品牌案例:https://www.kjdsnews.com/a/1667433.html
GBC律所代理时尚珠宝品牌Kendra Scott进行商标维权:https://www.kjdsnews.com/a/1667434.html
美国专利申请策略与程序运用:https://www.kjdsnews.com/a/1667435.html
特点有哪些?债券的定义?:https://www.vstour.cn/a/404251.html
为啥很多农村都成为了空心村,未来农村该何去何从?:https://www.vstour.cn/a/404252.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流