<< 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系列演示代码地址:
推荐阅读
-
-
方家|夏日写意:夏天的夜空中,最能够撩人心绪的,便是这如水的月华,
-
-
头号涂鸦|连衣裙+拖鞋,T恤+A字裙,温柔又甜美,春天就是要穿小清新风
-
宝宝上幼儿园边哭边鞠躬|宝宝上幼儿园边哭边鞠躬,悲伤而又不失礼貌
-
-
劳斯莱斯幻影|劳斯莱斯幻影作为豪车中的贵族,能不能碾压奔驰的S680?
-
启德杭州|到底还要不要去美国留学?教育部原副部长:去!
-
-
爱摩托|从现在起你有数了(40):意大利Cagiva卡吉瓦,全球摩托车品牌
-
更多维度、更多形式、更长时间 守护眼健康我们一直在努力
-
-
重庆开州山体滑坡2人死亡-暴雨致重庆发生三起山体滑坡
-
矛盾升级!违反政府禁令强行复工,特斯拉面临调查,马斯克:要抓就抓我吧!
-
新华网|中国代表呼吁使用化武追责问题应回归《公约》框架
-
-
-
『科技微数码』我们需要的是留住光影,还是创造光影?iQOO 3全方位拍照体验
-
申请香港专才计划很难?掌握这7个要点就能轻松获批!
-