请稍等 ...
×

采纳答案成功!

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

AtomicInteger中的getAndAddInt源码分析

//sun.misc.Unsafe#getAndAddInt
    public final int getAndAddInt(Object var1, long var2, int var4) {
        int var5;
        do {
            var5 = this.getIntVolatile(var1, var2);
        } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
        return var5;
    }

悟空老师,在AtomicInteger里面的getAndAddInt方法中,如果当前线程执行this.compareAndSwapInt(var1, var2, var5, var5 + var4)的时候执行失败,那么下一次执行这个方法的时候这个Object var1里面的这个值也会对应的更新为主内存里面的值,不这样感觉永远会执行失败,我说的对吗?
还有一个问题就是每个线程的AtomicInteger是对应主内存中的AtomicInteger的拷贝吗?

正在回答

1回答

是的,没错,下一次执行的时候,获取到的是最新的值。

是的,每个线程的AtomicInteger的值,是对应主内存中的AtomicInteger的拷贝。

1 回复 有任何疑惑可以回复我~
  • 提问者 6095289 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-02-04 11:54:15
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信