<< RESIZE_STAMP_SHIFT)return;finishing = advance = true;//最后退出的线程要重新check下是否全部迁移完毕i = n; // recheck before commit}}else if ((f = tabAt(tab, i)) == null)advance = casTabAt(tab, i, null, fwd);else if ((fh = f.hash) == MOVED)advance = true; // already processed//迁移node节点else {synchronized (f) {if (tabAt(tab, i) == f) {Node ln, hn;//链表迁移if (fh >= 0) {int runBit = fhNode lastRun = f;for (Node p = f.next; p != null; p = p.next) {int b = p.hashif (b != runBit) {runBit = b;lastRun = p;}}if (runBit == 0) {ln = lastRun;hn = null;}else {hn = lastRun;ln = null;}//将node链表 , 分成2个新的node链表for (Node p = f; p != lastRun; p = p.next) {int ph = p.hash; K pk = p.key; V pv = p.val;if ((phelsehn = new Node(ph, pk, pv, hn);}//将新node链表赋给nextTabsetTabAt(nextTab, i, ln);setTabAt(nextTab, i + n, hn);setTabAt(tab, i, fwd);advance = true;}//红黑树迁移else if (f instanceof TreeBin) {TreeBin t = (TreeBin)f;TreeNode lo = null, loTail = null;TreeNode hi = null, hiTail = null;int lc = 0, hc = 0;for (Node e = t.first; e != null; e = e.next) {int h = e.hash;TreeNode p = new TreeNode(h, e.key, e.val, null, null);if ((helseloTail.next = p;loTail = p;++lc;}else {if ((p.prev = hiTail) == null)hi = p;elsehiTail.next = p;hiTail = p;++hc;}}ln = (lc <= UNTREEIFY_THRESHOLD) ? untreeify(lo) :(hc != 0) ? new TreeBin(lo) : t;hn = (hc <= UNTREEIFY_THRESHOLD) ? untreeify(hi) :(lc != 0) ? new TreeBin(hi) : t;setTabAt(nextTab, i, ln);setTabAt(nextTab, i + n, hn);setTabAt(tab, i, fwd);advance = true;}}}}}}作者:故人
出处:
突击并发编程JUC系列演示代码地址:
推荐阅读
-
婆婆偏心小叔子,老公也不争怎么办心情,婆婆偏心小叔子,老公也不争怎么办逆向思维对付-
-
-
大众报业·海报新闻|海报时评丨加强金融支持,为乡村振兴注入强劲动力
-
-
一物|农夫偶得一物,文物贩子闻之要天价购买,此物和一位古代皇帝有关
-
-
时刻懂车仅7.99万起售的瑞虎7香不香?为啥卖不过宝骏530?
-
-
『小梨子』要及时矫正?关于口吃与口吃现象,家长要会区分,孩子说话不清楚
-
-
-
三晋风云客|他拿来摆地摊,被城里人疯抢一空,农村一文不值的东西
-
s伤心果雷军再次“出手”!全球首发LPDDR5,良心旗舰
-
李光洙|李光洙回应颁奖礼争议,直言有点对不起前辈们
-
创维|网传天美汽车将改名为创维汽车 4月下旬或推出新车
-
#Garen#一款像素风格动作冒险类游戏,每日一荐
-
每天晚上连续失眠,特别困但是咋都睡不着,已经连续一周左右,我是压力大还是轻度抑郁
-
-
-
「新华网」乌克兰高官“电话门”风波中请辞 辞职原因未明