본문 바로가기

Java

Thread join ( Thread 종료 대기)

반응형
Thread join method: Thread의 종료를 기다림

 

Toy project에서 메인 작업외의 별도 계산작업을 위한 작업 스레드가 종료될 때까지 기다리다가 실행되어야 할 상황이 있었다.

 

Thread class의 join method에 간단 예제.

 

package ThreadJoin;

public class ThreadMain {
    public static void main(String[] args){
        System.out.println("Main thread start..");

        Runnable runnable = new CustomRunnable();
        Thread thread = new Thread(runnable);
        thread.start();

        System.out.println("Main thread close..");
    }


    static class CustomRunnable implements Runnable {

        @Override
        public void run() {
            print(5);
        }

        private void print(int loop) {
            for(int i = 0; i < loop; i++) {
                System.out.println("CustomRunnable!!");
            }
        }
    }
}

 

새로 구현된 CustomRunnable thread의 print함수가 main의 마지막 print 함수보다 먼저 출력

Main thread start..
Main thread close..
CustomRunnable!!
CustomRunnable!!
CustomRunnable!!
CustomRunnable!!
CustomRunnable!!

 

join 함수 호출하면 Main thread가 정지상태가 되며 종료를 기다린다음 print함수 호출

package ThreadJoin;

public class ThreadMain {
    public static void main(String[] args){
        System.out.println("Main thread start..");

        Runnable runnable = new CustomRunnable();
        Thread thread = new Thread(runnable);
        thread.start();
        try {
            thread.join(); 
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Main thread close..");
    }
}

 

Main thread start..
CustomRunnable!!
CustomRunnable!!
CustomRunnable!!
CustomRunnable!!
CustomRunnable!!
Main thread close..
반응형

'Java' 카테고리의 다른 글

Java custom Annotation 사용하기  (0) 2019.08.13