스레드를 상태제어할 수 있는 메소드 중 하나로, 현재 실행중인 메소드를 강제로 lock(실행대기) 상태로 변환하고 join 메소드 대상 스레드를 실행 및 종료될때까지 대기하게 하는 메소드이다.
아래 스레드가 선언되어 있다고 가정해보자.
public class MyThread extends Thread{
public void main(){
System.out.println("Running");
}
}
이 스레드를 실행하기 위해 main thread가 아래와 같이 작성되어있다.
pulbic class ThreadTest{
public void main(String[] args){
MyThread th = new MyThread();
th.start();
System.out.println("main thread start");
System.out.pirntln("main thread ends");
}
}
위 main thread를 실행할 경우, 메인 스레드 실행이 종료된 후 sub thread가 실행된다.
※ 즉 main thread의 start/ends가 출력된 후에 sub thread의 Running이 실행.
이때 아래와 같이
System.out.println("main thread start");
try{
th.join();
} catch(Exception e){
e.printStackTrace();
}
System.out.pirntln("main thread ends");
join 메소드를 활용해 sub thread를 호출하게 되면, 메인 스레드 실행 도중 sub thread 호출 및 실행 종료될때까지 대기한다. 그 후 메인 스레드를 호출한다.