java CASアルゴリズム
3982 ワード
CASアルゴリズムは、ハードウェアの同時動作に対するサポートであり、3つの動作数:メモリ値、事前評価値、および更新値を含む。更新操作を実行していない場合は、先に同期方法でメモリ値と事前評価値が同じかどうかを比較します。等しいと更新値でメモリ値を交換できます。そうでなければ、何もしません。
転載先:https://www.cnblogs.com/huzi007/p/9365079.html
package concurrent;
/*
* CAS
*/
class CAS {
//
private volatile int value;
//
public synchronized int getValue() {
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);
}
}
public class TestCAS {
public static void main(String[] args) {
CAS cas = new CAS();
// 10
for (int i = 0; i < 10; i++) {
new Thread(new Runnable() {
@Override
public void run() {
int expectedValue = cas.getValue();
boolean b = cas.compareAndSet(expectedValue, (int) (Math.random() * 101));
System.out.println(b);
}
}).start();
}
}
}
転載先:https://www.cnblogs.com/huzi007/p/9365079.html