Java AtomicInteger类中getAndIncrement方法中的旋转是什么意思?
在AtomicInteger类的getAndIncrement方法中,调用不安全类的getAndAddInt方法,该方法包含compareAndSwapInt方法和spin(do…while)。 compareAndSwapInt方法是线程安全的,那么为什么不只是更改compareAndSwapInt方法中的值,还需要自旋来确保安全呢?Java AtomicInteger类中getAndIncrement方法中的旋转是什么意思?,java,compare-and-swap,atomicinteger,Java,Compare And Swap,Atomicinteger,在AtomicInteger类的getAndIncrement方法中,调用不安全类的getAndAddInt方法,该方法包含compareAndSwapInt方法和spin(do…while)。 compareAndSwapInt方法是线程安全的,那么为什么不只是更改compareAndSwapInt方法中的值,还需要自旋来确保安全呢? 谢谢你的回答。你在寻找什么来源?至少从JDK11开始,并且仍然在当前的JDK16中,的实现是: 我不知道你是从哪里得到的 上面的代码有一个旋转,因为CAS总是这
谢谢你的回答。你在寻找什么来源?至少从JDK11开始,并且仍然在当前的JDK16中,的实现是: 我不知道你是从哪里得到的 上面的代码有一个旋转,因为CAS总是这样工作的。(比较并设置):该代码表示,例如,当前为“5”的AtomicInteger,您正在尝试向其添加2:
int v;
do {
v = getIntVolatile(o, offset);
} while (!weakCompareAndSetInt(o, offset, v, v + delta));
return v;