阅读背景:

【并发编程】之模拟CAS算法_weixin_33877092的博客

来源:互联网 
package com.example.juc.thread;

/**
 * Created by wj on 2018/6/3.
 * 模拟CAS 算法
 */
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() {
                @Override
                public void run() {
                    int expected = cas.get();
                    Boolean b = cas.compareAndSet(expected, (int) (Math.random() * 101));
                    System.out.println(b);
                }
            }).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);

    }

}

p



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: