ConcurrentHashMap的结构
- 实现了AbstractMap
- 核心是有一个Segments的属性,这个属性相当于一个重入锁ReentrantLock,是一个数组加链表的结构,每个HashEntry数组进行修改时,必须获得它对应的Segment锁
- 接着看表中Segments的属性中有一个HashEntry->这个是一个链表节点,用于存储数据,指向下一个节点(讲大数据分成几段数据,然后变成segment,每段数据当中又被分成多个数组)
初始化
通过三个属性:initCapcity ,concurrencyLevel,loadFactor
initCapcity
这个属性决定了ConcurrentHashMap的总初始容量,和之后的segment相关
concurrencyLevel
默认16,决定了segment的数量,最多支持16个线程并发写,一旦初始化,就不能再扩容
loadFactor
Segment中的哈希表使用的,refresh——>对哈希表(底层是数组)扩容
使用new ConcurrentHashMap()进行无参构造
- 初始化容量Segment数组长度是16ÿ