我是這么理解的:
sizeCtl為負值且非-1時,應拆分成高16位和低16位來看,低16位的值M=參與擴容的線程數(shù)+1,而高16位,最高位表示符號位1,除符號位的值=Integer.numberOfLeadingZeros(n),n是table數(shù)組長度。
由于擴容線程數(shù)只與sizeCtl的低16位關(guān)聯(lián),所以線程加入擴容操作時sc+1,完成擴容后sc-1。
所以只能說sizeCtl本身的值跟擴容線程數(shù)是沒有關(guān)系的,但擴容線程數(shù)跟sizeCtl的低16位關(guān)聯(lián)。
深入淺出ConcurrentHashMap1.8簡書 占小狼轉(zhuǎn)載請注明原創(chuàng)出處,謝謝! 關(guān)于文章中的疑問:為什么要構(gòu)造一個反序鏈表,放在nextTable的i+n的位置上呢,在《深入分析ConcurrentHashMap1...