[英]What is the meaning of the spin in the getAndIncrement method in the AtomicInteger class?
在AtomicInteger class的getAndIncrement方法中,调用了unsafe class的getAndAddInt方法,其中包含compareAndSwapInt方法和spin(do...while)。 compareAndSwapInt 方法是线程安全的,那么为什么不只是改变 compareAndSwapInt 方法中的值,还需要 spin 是安全的呢? 谢谢您的回答。
你在看什么来源? 至少从 JDK11 开始,并且还在当前的 JDK16 中, Unsafe
的getAndAddInt
的实现是:
int v;
do {
v = getIntVolatile(o, offset);
} while (!weakCompareAndSetInt(o, offset, v, v + delta));
return v;
我不知道你从哪里得到compareAndSwapInt
。
上面的代码有一个旋转,因为 CAS 总是这样工作。 (比较并设置):该代码表示,例如,当前为“5”的 AtomicInteger 并且您尝试向其添加 2:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.