简单理解CAS算法
CAS算法
-
CSA算法保证了 数据的原子性;
-
CSA 算法是硬件对于并发操作共享数据的支持;
-
CSA 包含了三个操作数;
内存值V
预估值A
更新值B
当且仅当 V==A 时,V=B,否则不做任何操作
- 模拟CSA 算法
/**
* 模拟CAS算法
*/
public class TestCSA {
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 b= cas.compareAndSet(expectedValue, (int) (Math.random() * 100));
System.out.println(b);
}
}).start();
}
}
}
class CompareAndSwap{
private int value;
//获取内存值
public synchronized int get(){
return value;
}
//进行比较
public synchronized int compareAndSwap(int expecteValue,int newValue){
int oldValeu=value;
if(oldValeu==expecteValue){
this.value=newValue;
}
return oldValeu;
}