ノンブロッキング CAS に関する記事を読んでいて、次のコードに出くわしました。
public class SimulatedCAS {
private int value;
public synchronized int getValue() {
return value;
}
public synchronized int compareAndSwap(int expectedValue, int newValue) {
int oldValue = value;
if (value == expectedValue)
value = newValue;
return oldValue;
}
}
同期を使用する場合、この CAS 操作はどのようにノンブロッキングですか?
このクライアントがSimulatedCAS
独自の同期を実装する必要がないことを意味する場合、ブロッキングを排除する代わりに移動しただけではありませんか?