Java で数秒遅らせる方法

  1. Java で Thread.sleep() メソッドを使って遅延を作る
  2. Java で TimeUnit.sleep() メソッドを使って遅延を作る
  3. Java の ScheduledExecutorService を用いて遅延を作成する
  4. 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... 
comments powered by Disqus