ConcurrentHashMap简介说明
下文笔者讲述并发容器ConcurrentHashMap的简介说明,如下所示
ConcurrentHashMap的简介
ConcurrentHashMap:
是一个线程安全且高效的HashMap实现
在高并发场景中使用map结构时,经常使用ConcurrentHashMap结构
ConcurrentHashMap如何实现线程安全和高效的呢?
JDK1.7中:
ConcurrentHashMap使用Segment + HashEntry的数据结构
如下:
一个 ConcurrentHashMap 里包含一个 Segment 数组
Segment 的结构和 HashMap 类似,是一种数组和链表结构
segment继承ReentrantLock
一个 Segment 包含一个HashEntry 数组
每个 HashEntry 是一个链表结构的元素
当对 HashEntry 数组中数据进行修改时
须首先获得对应的 Segment锁---采用分段锁的方式实现线程安全
JDK1.8中:
放弃Segment这种复杂的设计
取而代之的是采用Node + CAS + Synchronized来保证并发安全
synchronized只锁定当前链表或红黑二叉树的首节点
这样只要hash不冲突,就不会产生并发,效率又提升N倍
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


