Java で数秒遅らせる方法

Mohammad Irfan 2023年10月12日
  1. Java で Thread.sleep() メソッドを使って遅延を作る
  2. Java で TimeUnit.sleep() メソッドを使って遅延を作る
  3. Java の ScheduledExecutorService を用いて遅延を作成する
  4. Java で ScheduledExecutorService を使って遅延を作る
Java で数秒遅らせる方法

このチュートリアルでは、Java で遅延を作る方法を紹介し、それを理解するためのコード例をいくつか挙げています。

遅延を作るには、TimeUnit.sleep()ScheduleAtFixedRate()Thread.sleep() メソッドなど、いくつかの方法があります。例を見てみましょう。

Java で Thread.sleep() メソッドを使って遅延を作る

sleep() は、タスクを同時に作成して実行するために使われる Java クラスで、現在の実行をしばらくの間一時停止するための sleep() メソッドを提供します。

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      for (int i = 0; i < 2; i++) {
        Thread.sleep(1000);
        System.out.println("Sleep " + i);
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

出力:

Sleep 0
Sleep 1

Java で TimeUnit.sleep() メソッドを使って遅延を作る

この例では、TimeUnit クラスの sleep() メソッドを利用して、指定した時間だけ実行を遅らせるようにしています。TimeUnit クラスは Java のコンカレント API パッケージに属しています。

import java.util.concurrent.TimeUnit;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      for (int i = 0; i < 2; i++) {
        TimeUnit.SECONDS.sleep(2);
        System.out.println("Sleep " + i);
      }
    } catch (Exception e) {
      System.out.println(e);
    }
  }
}

出力:

Sleep 0
Sleep 1

Java の ScheduledExecutorService を用いて遅延を作成する

Java には、同時実行環境での実行をスケジュールするためのクラス ScheduledExecutorService が用意されています。その中の run() メソッドを使って別の実行パスを実行することができます。以下の例を参照してください。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class Main {
  public static void main(String args[]) {
    try {
      final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
      executorService.scheduleAtFixedRate(new Runnable() {
        @Override
        public void run() {
          executeTask();
        }
      }, 0, 1, TimeUnit.SECONDS);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  private static void executeTask() {
    System.out.println("Task Executing... ");
  }
}

出力:

Task Executing... 
Task Executing... 
Task Executing... 

Java で ScheduledExecutorService を使って遅延を作る

Java 9 以降のバージョンで作業している場合、メソッド参照の概念を使用して scheduleAtFixedRate() メソッド内のメソッドを呼び出すことができます。以下の例を参照してください。

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor();
      executorService.scheduleAtFixedRate(SimpleTesting::executeTask, 1, 2, TimeUnit.SECONDS);
    } catch (Exception e) {
      System.out.println(e);
    }
  }
  private static void executeTask() {
    System.out.println("Task Executing... ");
  }
}

出力:

Task Executing... 
Task Executing... 
Task Executing... 

関連記事 - Java Multithreading