ConcurrentHashMap分析

Posted fankongkong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ConcurrentHashMap分析相关的知识,希望对你有一定的参考价值。

1、ConcurrentHashMap锁分段技术                                             

在ConcurrentHashMap使用锁分段技术,首先将数据分成一段一段地存储,然后给每一段数据配一把锁,当一个线程占用锁访问其中一个段数据的时候其他段的数据也能被其他线程访问。

 2、ConcurrentHashMap的结构                                                  

ConcurrentHashMap是由Segment数组结构HashEntry数组结构组成。

Segment是一种可重入锁(ReentrantLock),在ConcurrentHashMap里扮演锁的角色;HashEntry用来存储键值对数据

一个ConcurrentHashMap里包含一个Segment数组,Segment的结构和HashMap类似,是一种数组和链表结构。

一个Segment里包含一个HashEntry数组,每个HashEntry是一个链表结构的元素,每个Segment守护着一个HashEntry数组里的元素,当对HashEntry数组的数据进行修改时,必须首先获得与它对应的Segment锁

 3、ConcurrentHashMap的初始化                                                

通过initialCapacity初始化容量loadFactor负载因子concurrencyLevel等几个参数来初始化segment数组、段偏移量segmentShift、段掩码segmentMask和每个segment里的HashEntry数组来实现的。

 4、定位Segment                                                                         

既然ConcurrentHashMap使用分段锁Segment来保护不同段的数据,那么在插入和获取元素的时候,必须先通过散列算法定位到Segment。

 5、ConcurrentHashMap的操作                                                   

a、get操作

b、put操作

c、size操作

 

以上是关于ConcurrentHashMap分析的主要内容,如果未能解决你的问题,请参考以下文章

从面试角度聊聊 ConcurrentHashMap 的理解

concurrenthasmap

ConcurrentHashMap源码分析(1.8)

ConcurrentHashMap原理分析

ConcurrentHashMap实现原理及源码分析

ConcurrentHashMap源码简单分析