您的位置:首页 > 编程语言

【并发编程】之模拟CAS算法

2018-06-03 16:38 429 查看
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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java