请稍等 ...
×

采纳答案成功!

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

关于Atomicnteger的incrementAndGet()方法存在的疑问?

图片描述
图片描述
不太明白为什么这两处都有加1的操作?
这里的死循环在跳出之前会对var5即主内存进行+1的操作:即这里的var5+var4,但是incrementAndGet()这个方法里面,也有一个+1的操作。

正在回答

2回答

你好,这个方法调用底层cas算法时会对主存里的值+1,然而当前线程里的值是+1之前的,因此在返回上一层时要+1才是实际主存里的值。

0 回复 有任何疑惑可以回复我~
  • 提问者 LittleNiq #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-11-29 14:43:56
提问者 LittleNiq 2018-11-29 14:43:16

谢谢您的回答,但是我还是有疑问,感觉自己还是没有理解到点子上。 这里的var5是不是相当于主存里的值,在执行getAndAddInt的时候不是已经将var5(主存的值)返回到上一层(这时当前线程就可以得到主存里的值了,最后 return var5)。为什么还要在执行完getAndAddInt之后再进行一次+1操作呢?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号