개발/Java

Thread sleep(), join()

멍냐옹2 2023. 2. 20. 16:14
반응형

Thread에 존재하는 sleep()과 join 메소드에 대해 알아보자

 

1. sleep()

1) 정의

sleep메소드는 Thread가 동작하면서 ()안에 적은 밀리초만큼 동작한다

1000ms = 1s

public class CleanRunnable implements Runnable {
    @Override
    public void run(){
        System.out.println("===== 직원 청소 시작 (Runnable) =====");
        for (int i = 2; i <= 10; i+=2) {
            System.out.println("(직원) " + i + "번방 청소 중 (Runnable) ");

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
        System.out.println("===== 직원 청소 완료 (Runnable) =====");
    }
}

2) 호출

CleanRunnable cleanRunnable = new CleanRunnable();
Thread thread = new Thread(cleanRunnable);
thread.start();

출력된 시간을 보면 1초마다 출력된 것을 확인 할 수 있다.

 

 

2. Join()

1) 호출

메소드 실행 시 중간에 thread.join(ms)를 입력하면 해당 start()함수 호출 후 2.5초가 지나면 cleanByBoss()함수가 호출된다.

CleanRunnable cleanRunnable = new CleanRunnable();
Thread thread = new Thread(cleanRunnable);
thread.start();

try {
    thread.join(2500); // 2.5초 대기
} catch (InterruptedException e) {
    throw new RuntimeException(e);
}

cleanByBoss();

직원 청소가 3개 시작 후 사장청소가 시작된 것을 보면 알 수 있다.

 

해당 내용은 "인프런" - "나도코딩의 자바 기본편 - 풀코스 (20시간)"을 학습하며 정리한 내용입니다.
틀린 사항이 있을 경우, 알려주시면 감사하겠습니다 :) 

반응형