码迷,mamicode.com
首页 > 其他好文 > 详细

ConcurrentHashMap分析

时间:2017-08-03 16:51:06      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:hashmap   get   插入   线程   tor   可重入   eve   cto   定位   

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分析

标签:hashmap   get   插入   线程   tor   可重入   eve   cto   定位   

原文地址:http://www.cnblogs.com/fankongkong/p/7280235.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!