cas compare and swap 包含3个操作数
1、需要读写的内存位置v
2、用来比较的A
3、拟写入的新值B
当且仅当V的值等于A,cas会通过原子的方式用B来更新V,否则不会执行任何操作
public class SimulatedCAS {
private int value;
public synchronized int get(){
return value;
}
public synchronized int compareAndSwap(int expectedValue, int newValue){
int oldValue = value;
if (oldValue == expectedValue){
value = newValue;
}
return oldValue;
}
public synchronized boolean compareAndSet(int expectedValue, int newValue){
return (expectedValue == compareAndSwap(expectedValue,newValue));
}
}