<< 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系列演示代码地址:
推荐阅读
-
[聚玩社官方]画面精美,类型依然为RPG,《尼尔》手游新作宣传片公布
-
芯片@写给正在亏损的股民:极端恐慌下,潜在机会!(附股)
-
-
-
日月军武|外媒惊呼:中国改变了外交官越来越敢发声,赵立坚质问令西方侧目
-
-
-
私域正成为消费零售企业的标配,所以大家一定要想清楚
-
砍柴网2020年笔记本电脑消费趋势:向新品牌倾斜 华为苹果关注度高
-
冰箱■冰箱如果要清理干净,一个卫生死角不能放过,不然清理效果很差
-
全媒体聚焦国际巨头再亮“王牌”,面对华为也胜券在握?,时隔半年
-
-
Angelia妈咪|要从3个方面开始,宝宝用尿不湿会导致O型腿?预防O型腿的形成
-
汪小菲|葛斯齐不仅不帮大S,反而怒赞汪小菲心善,转变之快,有3种可能
-
设好三重密码,确保手机安全,第三个密码一般人不知道哦
-
北京农展馆附近工作,租房预算9000左右,上班单程通勤时间在40分钟内,在哪个小区能租到较新的两居室
-
「一个微信群里的抗疫故事」通讯:一个微信群里的抗疫故事
-
出道35年零绯闻,56岁不恋爱不结婚不生子,无父无母孑然一身
-
-
【求职】适合“二本考生”的8大本科专业,找工作容易,收入也高