[Java] 스레드 상태제어 - join

Hyo Kyun Lee·2022년 2월 4일
0

Java

목록 보기
45/49

1. join

스레드를 상태제어할 수 있는 메소드 중 하나로, 현재 실행중인 메소드를 강제로 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 호출 및 실행 종료될때까지 대기한다. 그 후 메인 스레드를 호출한다.

0개의 댓글