<< 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系列演示代码地址:
推荐阅读
-
-
[]海外5G肠子悔青了!63家5G运营商只有4家用毫米波!惨遭打脸!
-
景观灯@农民朋友注意,自建别墅虽好看,但这些方面要注意,以免
-
『底牌』终于不在隐藏,中国海军主动亮出底牌俄罗斯:中国竟有这一手
-
-
-
『印度』物资告急!印军传来一消息,最多10天弹尽粮绝,大批部队或被冻毙
-
人民日报客户端新疆频道|乌鲁木齐市高风险地区核酸检测工作已经结束
-
精选牛年年夜饭美食,营养美味绿色温馨,寓意美好助力健康
-
-
-
龙杰看搞笑|厉害了,我终于学会了如何一口气吹完一瓶酒了,搞笑GIF趣图:大姐
-
「小思姐聊生活」“高德地图”和“百度地图”到底有什么区别?专家:细节决定成败
-
中新经纬|今年各地已发放价格临时补贴约246.3亿
-
『人鱼科技』千万别不当回事,财神爷会被吸引注意力!,家门口有4大现象
-
教授|中医促会耳鼻咽喉科专委会过敏性疾病中西医结合诊疗学组成立
-
不错|好食物吃出好身体,3种食物不错过,排毒养颜,增强体质!
-
威廉|对凯特动口又动手,威廉出席约旦王储大婚秀真性情
-
-
安卓|iPhone 13的"创新" 安卓阵营早就玩腻了