public class TestCompareAndSwap {
public static void main(String[] args) {
final CompareAndSwap cas = new CompareAndSwap();
for(int i = 0;i<10;i++){
new Thread(new Runnable() {
public void run() {
int expectedValue = cas.get();
boolean bo = cas.compareAndSet(expectedValue, (int)Math.random()*101);
System.out.println(bo);
}
}).start();
}
}
}
class CompareAndSwap{
private int value;
//获取内存值
public synchronized int get(){
return value;
}
//比较
public synchronized int compareAndSwap(int expectedValue,int newValue){
int oldValue = value;
if(oldValue == expectedValue){
this.value = newValue;
}
return oldValue;
}
//设置值
public synchronized boolean compareAndSet(int expectedValue,int newValue){
return expectedValue == compareAndSwap(expectedValue, newValue);
}
}
输出结果:
true
true
true
true
true
true
true
true
true
true