<< 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系列演示代码地址:
推荐阅读
-
今天北京强降雨集中在午后到夜间|今天北京强降雨集中在午后到夜间
-
-
公务员|17省份今举行公务员省考笔试 招考有这些变化
-
-
-
历史神秘事|他给予诸葛亮信任,就是为了继续匡扶汉室,刘备是仁义君子
-
健康科谱罗医生|对健康好还是坏,今天告诉你答案,了解下,早上空腹吃香蕉
-
-
巧百搭|“保暖系”搭配来袭!时尚也能温暖如春,轻松俘获冬季时尚
-
-
玛娜沙1.5 亿像素主摄:三星 Galaxy S21 曝光,后置
-
县委大院|《县委大院》选角失误:3位演员被过度吹捧,全程敷衍了事
-
女子贷款整容效果不佳遭欺诈,整形机构被判赔3倍整容费
-
电影|为了4万块钱,奥运会女冠军向生活低头,退役后去日本拍动作电影
-
-
|网曝《浪姐4》成团名单!18人进总决赛,7人淘汰,11人成团
-
-
-
-