ConcurrenthashMap源码解析

先看这篇

入门

再看这篇

进阶_源码

Table数组指的是 全局的大Node数组

put时,如果原先 Table数组中没有该hash值对应的Node结点,则CAS插入该记录(我猜每一个node结点都是用volatile修饰过的),如果原先 Table数组中有该hash值对应的Node结点,则对该Node结点(Node结点其实就是对应的链表的第一个结点或者红黑树的根节点)加Synchronized锁,这样可以确保put成功。

你可能感兴趣的:(笔面试,JAVA,基础,链表,java,数据结构)