<< 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系列演示代码地址:
推荐阅读
-
-
-
开幕|高清大图|来看看2020中国网络诚信大会开幕现场
-
创始人张一鸣:10年面试2000人,我发现混的好的人,全都有同一个特质
-
奔驰GLE|本田冠道和凯迪拉克XT5,这两款车型该如何选择?谈谈我的建议
-
-
青铜上王者|S10主题曲发布,难听、广告太多被喷,可这些彩蛋你找到了吗?
-
【人民网】侧记:国务院联防联控机制发布会亮相 回应关切更
-
-
产业:“产业就是定心丸”——广西阳朔依托养殖业助脱贫见闻
-
穿搭|张韶涵穿“肥肥衫”走机场,虽然看着好似圆了两圈,但依旧不太胖
-
宫本武藏|金秋永久皮肤宝箱选谁好?霸王丸烂大街先别选
-
「」新房硬装快要收尾了, 吊顶和地砖效果很漂亮, 忍不住晒晒
-
科技阿维|双曲面屏+顶级防水,麒麟980旗舰加速退场,从5488元降至3388元
-
为啥全国各地的肉松卷基本上都是只在两头蘸满了肉松而里面都是沙拉酱
-
【小豆豆说健康】羡慕李小冉,靠自己活成人生赢家,不服输的陈数:从小自卑被嫌丑
-
-
阿娇头部表面一层已缝66针:阿娇晕倒撞破头部 经纪人称其伤口表面一层已缝66针
-
-