はじめに
JavaのTimer
とTimerTask
は、将来のタスクをスケジュールするために使用されます。TimerTask
は、Runnable
インターフェイスを実装する抽象クラスであり、Timer
クラスでタスクをスケジュールするのに役立ちます。TimerTask
クラスを使ってタスクを定義し、Timer
クラスを使ってそれをスケジュールできます。Timer
は、タスクのスケジュールにバックグラウンドスレッドを使用します。
JavaのTimer
とTimerTask
は、将来のタスクをスケジュールするために使用されます。TimerTask
は、Runnable
インターフェイスを実装する抽象クラスであり、Timer
クラスでタスクをスケジュールするのに役立ちます。TimerTask
クラスを使ってタスクを定義し、Timer
クラスを使ってそれをスケジュールできます。Timer
は、タスクのスケジュールにバックグラウンドスレッドを使用します。
次のコードを使用して、Timer
とTimerTask
に必要なパッケージをインポートします。
import java.util.Timer;
import java.util.TimerTask;
TimerTask
クラスを使って実行するタスクを作成します。実行するタスクを定義するには、run()
メソッドをオーバーライドします。たとえば、「Hello, World!」と表示するタスクを次のように作成できます。
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Hello, World!");
}
};
次のコードを使用して Timer
オブジェクトを作成します。
Timer timer = new Timer();
タスクをスケジュールするには、Timer
クラスの schedule()
メソッドを使用します。たとえば、1000 ミリ秒(1 秒)後にタスクを実行したい場合、次のコードを使用できます。
timer.schedule(task, 1000);
これにより、1 秒の遅延後にタスクが実行されるようにスケジュールされます。
ディレイと周期をパラメータとして schedule()
メソッドを使用することで、繰り返し実行するタスクをスケジュールすることもできます。次の例では、1 秒のディレイ後に始まり、2 秒ごとに「Hello, World!」と表示するタスクをスケジュールしています。
timer.schedule(task, 1000, 2000);
TimerTask
クラスの cancel()
メソッドを使用して、予定されたタスクをキャンセルすることもできます。次の例では、タスクが一度だけ実行された後にキャンセルされるように予定されています。
TimerTask task = new TimerTask() {
public void run() {
System.out.println("Task is being executed...");
cancel();
}
};
timer.schedule(task, 1000);
前回の実行の完了時間に関係なく、一定の間隔でタスクを実行するようにスケジュールするには、scheduleAtFixedRate()
メソッドを使用できます。たとえば、次のコードを使用して、タスクの実行にかかる時間に関係なく、2 秒ごとに「Hello, World!」と表示するタスクをスケジュールできます。
timer.scheduleAtFixedRate(task, 1000, 2000);
ExecutorService
を使用して TimerTask
オブジェクトをスケジュールできます。ここでは、ScheduledExecutorService
を使用してタスクをスケジュールします。たとえば、次のコードを使用して、2 秒ごとに「Hello, World!」と表示するタスクを作成できます。
ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
executor.scheduleAtFixedRate(task, 1000, 2000, TimeUnit.MILLISECONDS);
最後に、ターミナルで次のコマンドを使用してコードをコンパイルして実行します。
javac TimerTaskDemo.java && java TimerTaskDemo
この実験では、JavaのTimerとTimerTaskを使用して、特定の時刻または遅延でタスクをスケジュールして実行する方法を学びました。また、タスクを繰り返し実行するスケジュールを設定する方法、タスクをキャンセルする方法、scheduleAtFixedRate()
メソッドを使用する方法、およびExecutorService
を使用してTimerTask
オブジェクトをスケジュールする方法についても学びました。