<< 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系列演示代码地址:
推荐阅读
-
资讯新广角|制裁中方24家企业,中方外交部已给出回应,美国又以南海建岛为由
-
5个简单的步骤掌握Tensorflow的Tensor
-
-
-
桃花树下的约会|中招的老人很伤心,子女却还浑然不觉,四种“新型不孝”开始蔓延
-
-
股价|“逗鹅冤”火遍全网,腾讯股价站上515港元续创新高
-
-
投资|7月经济数据有望释放更多“正能量” 复苏态势稳固
-
美国民众|7月美国民众购枪支数量高居不下 民众为安全买枪支
-
国际丨拜登接受提名演讲不忘秀恩爱:相信妻子能当好第一夫人
-
-
注意!受台风“巴威”影响 浙北沿海今明天有9至11级大风
-
没人识|一生不可不读的40句经典语录,十年寒窗没人识,一举成名天下知
-
-
87870游戏|老司机开车了?余霜:赶紧上车坐稳扶好
-
小米Civi|小米Civi 2现身:旗下最美手机产品要上新了
-
[花卉]新买的花养不活?记住1个“要点”,养啥花都活,从此养花不发愁
-
狗狗洗澡居然看动画片提神 全程目不转睛真是太可爱了
-