longAccumulate是否会在Cell[]扩容到最大值并且不断发生竞争时回退casBase

YiLaiL YiLaiL 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

最近在学JUC学到longAccumulate时有了问题,问了很多AI都说在Cell[]扩容到最大值并且不断发生竞争时会回退casBase,并称这是一种保底机制,但是我在看源码时好像并没有看到哪里能回退casBase,源码处理当Cell[]扩容到最大值并且不断发生竞争问题时似乎只尝试为线程更换cell

index = advanceProbe(index);

AI解释时一直称当Cell[]扩容到最大无法更新时,会调用以下代码,但是我认为当Cell[]被创建好后,应该是不会有机会执行的。

  else if (casBase(v = base,
                     (fn == null) ? v + x : fn.applyAsLong(v, x)))
        break;
}

来个大佬解答一下吧求求了,困惑好久了

...全文

相关推荐

评论
收藏 已收藏
分享
返回顶部
YiLaiL
Java 51,407 成员 86,130 内容