Java で数秒遅らせる方法
Mohammad Irfan
2023年10月12日
-
Java で
Thread.sleep()
メソッドを使って遅延を作る -
Java で
TimeUnit.sleep()
メソッドを使って遅延を作る -
Java の
ScheduledExecutorService
を用いて遅延を作成する -
Java で
ScheduledExecutorService
を使って遅延を作る
このチュートリアルでは、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...