Java - delay、数秒遅らせる方法

Javaでコードを実行せずに、数秒を遅らせる方法を紹介します。

1. Thread.delay() による時間遅延

Thread.delay() は引数に渡された millisecond を遅らせます。入力された時間の間スリープし、次のコードを実行せずに待機します。 delay() は InterruptedException 例外が発生する可能性があるため、 try-catch で例外処理を行う必要があります。

次の例では3秒間スリープし、ログに現在の時間を出力して実際に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
codechachaCopyright ©2019 codechacha