请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么要用getAndIncrement 再判断 if (c + 1 < capacity)

老师您好:

 为什么要用getAndIncrement 再判断 if (c + 1 < capacity),为什么不直接用incrementAndGet <capacity这样呢?

正在回答

1回答

我认为getAndIncrement获取到值后直接在当前线程中进行操作,而incrementAndGet会使用CAS算法去进行比较替换,期间可能替换失败而导致过多的自旋操作,用getAndIncrement就没有多余的自旋操作这个步骤了

0 回复 有任何疑惑可以回复我~
  • 提问者 Kevin7012055 #1
    非常感谢!
    看到源码里两个调用unsafe
    一个是return unsafe.getAndAddInt(this, valueOffset, 1);
     另一个是return unsafe.getAndAddInt(this, valueOffset, 1) + 1;
     好像没啥区别 :)
    回复 有任何疑惑可以回复我~ 2020-11-25 22:46:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信