我對Java相當陌生,並且有疑問需要清除。「如果」總是等方法完成?
使用這樣的代碼:
public int x;
public int elaborateX(){
x = 0;
setX();
x+=1;
return x;
}
public void setX(){
//...
//some workload here
//...
x = 5;
}
據我瞭解有機會(尤其是如果該方法setX的()所做的不僅僅是集合X更多)elaborateX()將返回 「1」。
我在看後面的問題後知道線程可以用來防止「bug」,但我的問題是;下面總是會等待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;
}
Will elaborateX()在這種情況下總是返回「6」嗎?
我在問,因爲我需要100%確定,否則我會用「正確的方法」來代替這個「竅門」。
感謝
假設單個線程,「由於我知道有機會(尤其是如果該方法setX的()並不僅僅是集合X更多)elaborateX ()將返回「1」。「是不正確的。 – 2012-02-20 17:02:10
是的,它會的。在像上面那樣的單線程應用程序中,可能會返回6,因爲每個指令在下一個指令之前都會完全執行。這是確定性的。 – jbranchaud 2012-02-20 17:02:59