171113 Thread.join() - RYUDONGJIN/Memo_wiki GitHub Wiki

Thread join() 정리

  • 실행된 thread가 종료될 때까지 기다렸다가 실행시키는 method.
public class practice  {
     
    public static void main(String[] args) {
    	System.out.println("main Thread의 시작");
    	Thread outter = new Thread() { //innerClass
			@Override
			public void run() {
				System.out.println("outter 시작");
				Thread inner = new Thread(new Runnable() { //Runnable interface implements
					@Override
					public void run() {
						System.out.println("inner의 시작");
						for(int i=0; i<5; i++) {
							System.out.println("inner의 카운트" + i);
							try {
								sleep(1000);
							} catch (InterruptedException e) {
								e.printStackTrace();
							}
						}
						System.out.println("inner의 끝");
					}
				});
				inner.start();
				try {
					inner.join(); //innerThread가 종료될 때까지 outterThread는 대기
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println("outter의 끝");
			}
    	};
    	outter.start();
    	try {
			outter.join(); //outterThread가 종료될 때까지 mainThread는 대기
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
    	System.out.println("main의 끝");
    }
}