2014-09-06 2 views
0

익명 클래스에서 새 스레드를 만들었습니다. 쓰레드가 끝날 때까지 어떻게 프로그램을 멈출 수 있습니까? 모든 것이 작동하는지 확인하십시오. 좋아, 계속하지 않는 루프를 만들지 만 이것이 해결책이 아니라는 것을 알고 있습니다. 나는 가장 간단한 해결책을 찾는다.스레드 종료 후에 만 ​​계속됩니다.

public void methodName() { 
    Thread t = new Thread() { 
     public void run() { 
     } 
    } 
    t.start() 
    System.out.print("Finish"); 
} 

스레드 종료 후에 만 ​​인쇄를 시작하고 싶습니다.

스레드에서 나는 외부 라이브러리를 사용합니다. 그리고 스레드가 끝나지 않았지만 스레드 내에서 실행되는 함수가 완료되지 않음을 발견했습니다. 그것들은 Lock이나 Synchronize와 같은 방식으로이 기능이 끝날 때까지 실행을 멈출 수 있다는 것을 알려줍니다.

함수의 실행이 끝나면 변수를 넣을 수 있습니다.

 ParseQuery<ParseObject> query = ParseQuery.getQuery("GameScore"); 
    query.getInBackground("xWMyZ4YEGZ", new GetCallback<ParseObject>() { 
    public void done(ParseObject object, ParseException e) { 
      if (e == null) { 
      // object will be your game score 
      } else { 
      // something went wrong 
      } 
     } 
     }); 

이것은 API에서 가져온 것입니다. 이 코드를 Thread에 넣고 done 함수가 호출 된 후에 만 ​​계속 진행하고 싶습니다. 감사합니다,

+1

수정 사항 : 확실합니까? 쓰레드는 run() 메소드가 끝날 때까지 끝나지 않습니다. – Zenadix

+0

@Zenadix 예, 스레드는 스레드이기도 한 함수를 실행합니다.이 스레드는 API에서 작성했지만 코드는 컴파일되어 볼 수 있습니다. 스레드가 완료되었지만 기능이 실행을 마친 것으로 보입니다. 이 함수가 끝났을 때 호출되는 다른 메서드가 있습니다. 그래서 나는 그들의 물건을 넣을 수 있습니다 – Alon

+0

아마 내가 당신을 도울 수있는 코드를 게시하면. – Zenadix

답변

7

그냥 스레드에서 join 전화 :

t.start(); 
t.join(); 
System.out.print("Finish"); 

join 통화 대기 반환하기 전에 해지 할 스레드.

+2

필수 Javadoc 링크 : http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html#join-- – hexafraction

+0

질문이 업데이트되었습니다. – Alon