「 源码 」 十二月 15, 2019
源码系列-ConcurrentHashMap源码
文章字数 17k 阅读约需 15 mins.
JDK1.8 的实现摒弃了Segment
的概念,直接用Node数组 + 链表 + 红黑树的数据结构来实现,并发控制使用Synchronized
和CAS
来操作,
用来控制table的初始化和扩容的操作,不同的值有不同的含义。
- table未初始化时:sizeCtl = 0或者 sizeCtl= capacity;
- table正在初始化:sizeCtl = -1;
- table初始化完成:sizeCtl = thresold;
- 当sizeCtl = − (1 + N),表明正在有N条线程正在进行resize...