<< 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系列演示代码地址:
推荐阅读
-
鸡蛋饼的做|鸡蛋饼新做法,饼薄又劲道,越嚼越香,学会再也不用出门买
-
【利刃军事】甚至美国东海岸,俄罗斯部署顶级“航母杀手”:可控制整个大西洋
-
-
杨千嬅|“吃软饭”不敢离婚的四位男星,妻子都是富豪,网友:不敢离
-
[窗台]窗台种一丛百合,从种植到开花,只用了2个月时间!
-
-
东方网娱乐|电视剧《以家人之名》开播全剧聚焦90后原生家庭
-
健康好的人生要有好的睡眠!藏在身边的“天然安眠药”,您还不知道?
-
养生最新鲜|纠正偏见,解决育儿方面的盲点。,分享育儿知识
-
-
嘉兴抽屉|嘉兴在线丨夜晚,八旬老人为啥给他们当场写下表扬信?
-
你是不是曾经因为一个人或一件事,讨厌某个明星或某样东西
-
-
星座的占卜技巧|3生肖扬眉吐气,事业有所突破,收获丰厚,10月18日开始
-
爱上搞笑菌|幽默搞笑:一只苍蝇掉水里了,拍着翅膀拼命向外飞,原创
-
-
迪丽热巴|曝微博之夜拟邀154位艺人:3对热门CP,热巴“怀孕”风波后将现身
-
-
-
形势反转,这也就是为何他被视为新赛季的离队热门,现受到主帅认可再获机会