저는 Java를 처음 접했을 때 그 사실을 분명히해야합니다. 이 같은"if"항상 메서드를 마칠 때까지 대기합니까?
사용하여 코드 :
public int x;
public int elaborateX(){
x = 0;
setX();
x+=1;
return x;
}
public void setX(){
//...
//some workload here
//...
x = 5;
}
나는 기회가 알고있는 것처럼
elaborateX()가 "1"을 반환 할 것 (방법 setX()가 바로 설정 X보다 더 많은 작업을 수행 특히). 나는 그 스레드 주변의 문제를 찾고 후 알고는 "버그"를 방지 할 수 있습니다,하지만 내 질문은, 다음은 항상 setX()가 finish 실행을 기다릴 것입니까?
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