これはアトミック操作の優れた汎用フレームワークだと思いますか? また、単一の JVM で一度に複数のバイトコードを実行する方法がないため、Java アプリケーションに関して個々のバイトコードはアトミックであると言うのは正しいと思いますか? では、if else に 1 バイト コードがあれば、この if else 命令はアトミックになるのでしょうか?
// CAS, Compare and Swap
public abstract class CASOperation<T> {
protected T valueAtStart;
public CASOperation(){
valueAtStart = objectToReview();
}
public void exec(){
synchronized(this){
while(!valueAtStartEqualsTheCurrent()){
valueAtStart = objectToReview();
}
execImp();
}
}
private boolean valueAtStartEqualsTheCurrent() {
if (objectToReview().equals(valueAtStart)){
return true;
} else {
return false;
}
}
abstract protected T objectToReview();
abstract protected void execImp();
これは実際には比較実行フレームワークであるため、元のスナップされた値が変更されていないことを確認した後、コードのブロックを実行します。