为啥AtomicInteger底层用的volatile,但是可以进行++的操作呢

为啥AtomicInteger底层用的volatile,但是可以进行++的操作呢?

众所周知,用volatile时,对volatile的操作最好不要涉及到volatile自身。

但AtomicInteger它有一个方法incrementAndGet,它却可以对自己进行++。
在这里插入图片描述

可以看到,它调用了unsafe的getAndAddInt,这个相当于乐观锁,比较内存中的内容是否一样,如果一样就改掉,这是一个原子操作——比较+修改。
在这里插入图片描述
所以它就是安全的。

发布了67 篇原创文章 · 获赞 32 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/weixin_43751710/article/details/104116569