18.模拟 CAS 算法

来源:互联网 发布:136书屋下载软件 编辑:程序博客网 时间:2024/06/07 17:46
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);}}

输出结果:

truetruetruetruetruetruetruetruetruetrue

0 0