<< 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系列演示代码地址:
推荐阅读
-
太白的西瓜|呆萌可爱的张艺凡,以后的路怎么走?,创3:干净温婉
-
网络|三星展示首个6G原型系统:速率是5G的50倍 预计2030年商用
-
-
-
-
上观新闻|为何百联盒马都在抢滩?新零售“时空转换”坪效翻番,做早餐既辛苦又薄利
-
大电竞LOL|SN 2:1 JDG Bin船长开局双杀梦幻起飞SN拿下赛点
-
-
穿搭|四套复原款唐制汉服,配色端庄又典雅,带你领略大唐盛世
-
关至|9月融券余额连破两关至850多亿元 中芯国际、恒瑞医药融券净卖出额居前
-
-
环球网|环球:美国的目标是中国最好像苏联一样崩溃、解体
-
《赛博朋克2077》成功登陆Linux:画面、帧率感人至深
-
-
-
成龙|成龙香港豪宅竟在工业区,从外观看不出是住宅!内部却有无数暗门
-
作文:学生因作文被批没有“正能量”自杀,我们作文评判标准该改了吧!
-
快科技美国空军完成不可思议壮举:不靠燃烧产生五倍于音速推力
-
-
有没有西安的朋友帮忙制作一个三天的游玩计划或者建议