AtomicInteger的incrementAndGet如何实

2021-08-16  本文已影响0人  张某某xyz

20210817

AtomicInteger的incrementAndGet最终调Unsafe.getAndAddInt实现的

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;
    }

所以答案是通过自旋锁和CAS实现的

上一篇 下一篇

猜你喜欢

热点阅读