ConcurrentHashMap 底层实现原理

扩容标识戳

高16位标识扩容戳,低16位标识扩容的线程数,

ConcurrentHashMap 采用了cas实现无锁并发同步,利用多线程来进行扩容,它时把node数据当作多线程之间的共享任务队列,通过指针来划分每个线程负责的区间,每个线程通过逆序遍历来实现扩容,迁移完的bucket 会被ForwardingNode替换;
1、fwd:这个类是个标识类,用于指向新表用的,其他线程遇到这个类会主动跳过这个类,因 为这个类要么就是扩容迁移正在进行,要么就是已经完成扩容迁移,也就是这个类要保证线 程安全,再进行操作。
2、advance:这个变量是用于提示代码是否进行推进处理,也就是当前桶处理完,处理下一个 桶的标识
3、finishing:这个变量用于提示扩容是否结束用的

https://blog.csdn.net/weixin_42022924/article/details/102865519

https://blog.csdn.net/ZOKEKAI/article/details/90051567

原文地址:https://www.cnblogs.com/Jomini/p/13814601.html