package com.wyz.juc;
import java.util.Random;
/**
* 模拟 CAS算法
* @author WangChong
*/
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 expectValue = cas.get();
boolean b = cas.compareAndSet(expectValue, new Random().nextInt());
System.out.println(b);
}
}).start();
}
}
}
class CompareAndSwap{
//内存值
private int value;
/**
* 获取内存值
* @return
*/
public synchronized int get(){
return value;
}
/**
* 比较
* @return
*/
public synchronized int compareAndSwap(int expecteValue,int newValue){
int oldValue = value;
if(oldValue==expecteValue){
this.value = newValue;
}
return oldValue;
}
/**
* 设置
* @param expecteValue
* @param newValue
* @return
*/
public synchronized boolean compareAndSet(int expecteValue,int newValue){
return expecteValue == compareAndSwap(expecteValue,newValue);
}
}
juc学习备忘录6--模拟 CAS算法
最新推荐文章于 2024-07-11 16:03:52 发布