はじめに
今回はJavaで定期的にタスクを実行する方法を解説します。
本機能はバッチ処理でよく使用されます。
サンプルではTimerクラスを利用し、定期的にタスクを実行する処理を実装していきます。
それでは早速解説していきます。
1. 開発環境
以降、以下のバージョン、環境での解説となります。
IDE:eclipse
Javaバージョン:8
2. フォルダ構成
3. サンプルプログラムの実装
3-1. 定期的に実行したいタスクの実装
定期的に実行したいタスクはTimerTaskクラスを使用して実装します。
今回、「タスクが実行されました。」と定期的にコンソールに出力する処理をサンプルで実装していきます。
package main;
// 今回追加する部分
import java.util.TimerTask;
public class Main {
public static void main(String[] args) {
// 今回追加する部分
TimerTask task = new TimerTask() {
public void run() {
//定期的に実行したい処理
System.out.println("タスクが実行されました。");
}
};
}
}
また、何回実行したか確認するために、以下のように回数がわかるように実装してみましょう。
package main;
import java.util.TimerTask;
public class Main {
public static void main(String[] args) {
TimerTask task = new TimerTask() {
int count = 0; // 今回追加する処理
public void run() {
// 定期的に実行したい処理
count++; // 今回追加する処理
System.out.println(count + "回目のタスクが実行されました。"); // 今回修正する処理
}
};
}
}
3-2. スケジュールの実装
次に、いつタスクを実行開始し、どのぐらいの間隔でタスクを実行するのか実装していきます。
実装方法ですが、TimerクラスのscheduleAtFixedRateメソッドを使用します。
使い方は以下の通りです。
Timer timer = new Timer();
timer.scheduleAtFixedRate(定期的に実行したいタスク,初回のタスク実行までの時間(ms),実行するタスクの間隔(ms));
scheduleAtFixedRateメソッドの第二引数ですが、「初回のタスク実行までの時間」だけでなく、「タスク開始時間」をDate型で指定することもできます。
今回のサンプルでは、PGM実行後、1秒後に3秒間隔でタスクが実行されるような処理を実装していきます。
package main;
import java.util.Timer; // 今回追加する処理
import java.util.TimerTask;
public class Main {
public static void main(String[] args) {
Timer timer = new Timer(); // 今回追加する処理
TimerTask task = new TimerTask() {
int count = 0;
public void run() {
// 定期的に実行したい処理
count++;
System.out.println(count + "回目のタスクが実行されました。");
}
};
timer.scheduleAtFixedRate(task,1000,3000); // 今回追加する処理
}
}
上記実装完了しましたら、Main.javaを右クリック>Javaアプリケーションの実行で実行してみましょう。
以下のような文言が3秒間隔でコンソールに出力されればOKです。
1回目のタスクが実行されました。
2回目のタスクが実行されました。
3回目のタスクが実行されました。
4回目のタスクが実行されました。
・・・
さいごに
2020年から個人ブログはじめました!
フリーランスエンジニアになって得た知識と経験をもとに、フリーランスエンジニアに関する情報をはじめ、IT技術情報や業界情報、エンジニアライフハック等のコンテンツを配信していく予定です。
まだまだ記事数は少ないのですが、週単位で更新してますので、もしご興味ございましたら、みていただけると嬉しいです。