我正在阅读一篇关于非阻塞 CAS 的文章并遇到了这段代码:
public class SimulatedCAS {
private int value;
public synchronized int getValue() {
return value;
}
public synchronized int compareAndSwap(int expectedValue, int newValue) {
int oldValue = value;
if (value == expectedValue)
value = newValue;
return oldValue;
}
}
如果使用同步,这个 CAS 操作如何非阻塞?
如果我们的意思是这个客户端SimulatedCAS
不需要实现它自己的同步,那么我们不是只是移动了阻塞而不是消除它吗?