你们认为这是一个很好的原子操作通用框架吗?您还认为关于 Java 应用程序的单个字节码是原子的,因为没有办法使用单个 JVM 一次执行多个字节码,这样说是否正确?因此,如果 if else 有一个单字节代码,那么这个 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();
它实际上是一个比较和执行框架,所以在检查原始捕捉值没有改变之后,我们执行一些代码块。