原文地址
https://mp.weixin.qq.com/s/GPYUA1Ff3kpQgurIDLr3rA
不得不说,这篇文章解答了我一些之前面试被问到的问题。
非常实用。
比如这个扩容,我记得当时问的我
image.png
现在这篇文章至少让我知道了扩容的关键
sizeCtl
『sizeCtl在前面提到过,默认值为0,一般情况下表示ConcurrentHashMap的阈值,数组初始化时值为-1,当数组扩容时,表示为参与扩容的线程数。ConcurrentHashMap在扩容时把sizeCtl设置为一个很小的负数,并记住这个负数。线程参与扩容,该负数+1,线程退出该负数-1,这样就可以记住线程数了。一个变量维护四个状态,再次佩服ConcurrentHashMap的作者。』
image.png
网友评论