본문 바로가기
Java

다른 스레드의 종료를 기다렸다가 수행하는 방법, Thread.join()

by jayden-lee 2019. 4. 29.
728x90

주로 스레드는 다른 스레드와 독립적으로 실행하도록 한다. 그렇지만 특정 스레드가 종료될 때까지 기다렸다가 실행해야 하는 경우도 있을 수 있다. 예를 들어, A, B 두 개의 스레드가 있다. A 스레드는 B 스레드에서 실행한 결과값을 이용해야 한다고 가정하자. 이러한 경우에는 Thread 클래스의 join() 메서드를 사용하면 된다.

 

Thread 클래스의 join 메서드

 

ThreadA가 ThreadB의 join() 메서드를 호출하면, ThreadA는 ThreadB 작업이 종료할 때까지 일시 정지 상태가 된다. 작업이 종료되고 나면 ThreadA는 일시 정지 상태에서 실행 상태가 되서 다음 코드를 실행하게 된다.

 

  1. ThreadA는 ThreadB 작업을 실행한다.
  2. ThreadA는 ThreadB.join() 메서드를 호출한다.
  3. ThreadA는 일시 정지 상태가 되며, ThreadB가 작업이 종료될 때까지 기다린다.
  4. ThreadB는 작업을 수행한다.
  5. ThreadB 작업이 종료되면, ThreadA의 다음 코드가 수행된다.
// ThreadA.class

// ThreadB 작업 실행
threadB.start();

// ThreadA 일시 정지 상태로 변경
threadB.join();
// ThreadB.class

public void run() {
   // ThreadB 작업 실행
}

참고자료

댓글