简单理解CAS算法

简单理解CAS算法

CAS算法

  1. CSA算法保证了 数据的原子性;

  2. CSA 算法是硬件对于并发操作共享数据的支持;

  3. CSA 包含了三个操作数;

内存值V
预估值A
更新值B
当且仅当 V==A 时,V=B,否则不做任何操作

  1. 模拟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;
    }

你可能感兴趣的:(技术,CAS理解)