私はJavaをかなり新しくしており、クリアする必要があるのか疑問があります。私はelaborateX()は "1" を返すことのチャンス(特にメソッドSETX(あれば)だけを設定Xだけではありませんが)あります理解したよう"if"はいつもメソッドを終了するのを待つか?
public int x;
public int elaborateX(){
x = 0;
setX();
x+=1;
return x;
}
public void setX(){
//...
//some workload here
//...
x = 5;
}
:このようなコードを使用して
。
私は、スレッドが "バグ"を防ぐのに使用できるという問題を見た後で知っていますが、私の質問です。以下は常にsetX()が終了するのを待つでしょうか?
public int x;
public int elaborateX(){
x = 0;
if(setX()){
x+=1;
};
return x;
}
public boolean setX(){
//...
//some workload here
//...
x = 5;
return true;
}
この場合、elaborateX()は常に「6」を返しますか?
私は100%確実にする必要があるので、私はこのトリックの代わりに「適切なアプローチ」を使用します。
ありがとうございました
シングルスレッドを想定すると、時限待機/中断または
joining
によってのいずれかであるelaborateX ()は "1"を返します。 "間違っています。 –はい、そうです。上記のようなシングルスレッドアプリケーションでは、各命令が次の命令の前に完全に実行されるため、6が返されると期待できます。それは決定論的です。 – jbranchaud