Java - delay, 몇 초 지연시키는 방법

자바에서 코드를 수행하지 않고, 몇 초를 지연시키는 방법을 소개합니다.

1. Thread.delay()로 시간 지연

Thread.delay()는 인자로 전달된 millisecond를 지연합니다. 입력된 시간 동안 sleep하며, 다음 코드를 실행하지 않고 대기합니다. delay()는 InterruptedException 예외가 발생할 수 있기 때문에 try-catch로 예외처리를 해야 합니다.

아래 예제에서는 3초 sleep하며, 로그에 현재 시간을 출력하여 실제로 3초가 지연되었는지 확인해보았습니다.

import java.time.LocalDateTime;

public class Example {

    public static void main(String[] args) {

        System.out.println("Start doing something: " + LocalDateTime.now());

        try {
            System.out.println("Sleep 3s: "  + LocalDateTime.now());
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Done: "  + LocalDateTime.now());
    }
}

Output:

Start doing something: 2022-09-10T18:48:20.170331157
Sleep 3s: 2022-09-10T18:48:20.178606961
Done: 2022-09-10T18:48:23.178957983

2. TimeUnit.SECONDS.sleep()로 시간 지연

TimeUnit.SECONDS.sleep()는 인자로 전달된 초만큼 시간을 지연합니다. Thread.sleep()과 동일하게 입력된 시간만큼 대기하며 다음 코드를 실행하지 않고 대기합니다.

만약 분 단위로 지연하고 싶다면 TimeUnit.MINUTES.sleep() 처럼 TimeUnit을 Minutes로 변경해야 합니다.

아래 코드는 위와 같이 3초간 지연시키는 예제입니다.

import java.time.LocalDateTime;
import java.util.concurrent.TimeUnit;

public class Example1 {

    public static void main(String[] args) {

        System.out.println("Start doing something: " + LocalDateTime.now());

        try {
            System.out.println("Sleep 3s: "  + LocalDateTime.now());
            TimeUnit.SECONDS.sleep(3);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Done: "  + LocalDateTime.now());
    }
}

Output:

Start doing something: 2022-09-10T18:49:11.329376989
Sleep 3s: 2022-09-10T18:49:11.334769146
Done: 2022-09-10T18:49:14.334996809
Loading script...
codechachaCopyright ©2019 codechacha