ConcurrentHashMap的底层实现原理

1.ConcurrentHashMap的整体架构

由数组+单向链表+红黑树组成,当实例化一个ConcurrntHashMap实例的时候,默认会初始化一个初始长度为16的数组,由于其核心是用hash表,所以也会存在hash冲突问题,当hash冲突比较多的时候,查询起来会相对较难,所以在数组大小大于等64,单向链表长度大于等于8的时候,单向链表就会转化为红黑树,当链表长度小于8时会自动退化为单向链表。(以上与HashMap相同)

2.ConcurrentHashMap的基本功能

本质上是一个HashMap,但是在HashMap的基础上提供了一个并发安全的实现,通过Node节点加锁,保证数据的冲突

3.ConcurrentHashMap在性能上做的优化

(1)JDK1.8之后在线程并发时锁是针对节点,1.7中锁的是Segment,范围更大性能更低。

(2)在扩容的多线程对数组进行扩容时,对数组进行分片每个线程去对一个片区去进行迁移

经验分享 程序员 微信小程序 职场和发展