java并发编程 - ConcurrentHashMap在1.7和1.8版本核心方法实现图解

前言

ConcurrentHashMap作为HashMap在线程安全上的重要并发容器,其在jdk1.7和1.8版本中的设计和实现也不尽相同。首先在底层数据结构和算法上,1.7版本使用的是数组+链表的结构。使用Segment<K,V>分片机制和HashEntry<K,V>核心数据结构。Segment继承至ReentrantLock来充当显示锁的角色;由每个Segment保护其下面的数据,而HashEntry则组成了多个链表,被Segment所保护。


而1.8版本中,采用Node作为重要的数据结构,去掉了1.7中Segment分片概念,直接改HashEntry结构为核心结构为Node, 它继承至Entry<K,V>用于存储数据,是基本的存储单元。同时ConcurrentHashMap基于Node, 为了支持红黑树又扩展出了TreeNode和TreeBin;前者用于存储红黑树数据,后者封装了TreeNode。


下面我们就通过详细的图解,来寻找ConcurrentHashMap在jdk1.7和1.8中,核心方法在实现上详细脉络和需要注意的重点,顺着实现脉络,知道别人不知道的东西。


1.7版本的实现

image.png

image.png

image.png


image.png


1.8版本的实现


image.png

image.png

image.png

image.png

image.png



猜你喜欢

转载自blog.51cto.com/14815984/2498954