编程语言
首页 > 编程语言> > ConcurrentHashMap底层源码分析

ConcurrentHashMap底层源码分析

作者:互联网

上文讲到了hashmap的底层源码分析,可以了解到hashmap是线程不安全的。比如在场景多个线程同时调用put方法,会出现将前一个值给覆盖的现象。

 

 在JDK1.7版本中,ConcurrentHashMap的数据结构是由一个Segment数组和多个HashEntry组成,主要实现原理是实现了锁分离的思路解决了多线程的安全问题。Segment数组的意义就是将一个大的table分割成多个小的table来进行加锁,也就是上面的提到的锁分离技术,而每一个Segment元素存储的是 HashEntry数组+链表,这个和HashMap的数据存储结构一样。 如下图所示:

                                   

 

为了保证线程安全,Segment继承了ReentrantLock。

 

 

当多个线程在创建Segment过程中,使用了多重判断以及cas来保证。

 

标签:ConcurrentHashMap,hashmap,多个,源码,线程,数组,Segment,底层
来源: https://www.cnblogs.com/wxynb/p/16270346.html