Javaで定期的にタスクを実行する方法
いくつかのJavaアプリケーションは、一定の時間間隔の間にメソッドを実行する必要があります。たとえば、GUIアプリケーションはデータベースから情報を更新する必要があります。
1.スケジューラタスク
この機能のために、
-
TimerTaskを拡張したクラスを作成する必要があります( `java.util`で利用可能です)
パッケージ)。 TimerTaskは抽象クラスです。
-
実行するpublic void `run()`メソッドにコードを記述してください
定期的に。
-
メインクラスにコードを挿入します.
import java.util.TimerTask;
import java.util.Date;/** **
**
** @author Dhinakaran P.
** ///Create a class extends with TimerTask
public class ScheduledTask extends TimerTask {
Date now;//to display current time
//Add your task here
public void run() {
now = new Date();//initialize date
System.out.println("Time is :" + now);//Display current time
}
}
2.スケジューラタスクを実行する
スケジューラータスクの上で実行するクラス。
-
タイマーオブジェクトのインスタンス化
Timer time = new Timer();
-
スケジュールタスククラスオブジェクトをインスタンス化する
ScheduledTask st =新しいScheduledTask();
。 `Timer.shedule()`メソッドを通してスケジュールされたタスクを割り当てます。
import java.util.Timer;
/** **
**
** @author Dhinakaran P.
** ///Main class
public class SchedulerMain {
public static void main(String args[]) throws InterruptedException {
Timer time = new Timer();//Instantiate Timer Object
ScheduledTask st = new ScheduledTask();//Instantiate SheduledTask class
time.schedule(st, 0, 1000);//Create Repetitively task for every 1 secs
//for demo only.
for (int i = 0; i <= 5; i++) {
System.out.println("Execution in Main Thread...." + i);
Thread.sleep(2000);
if (i == 5) {
System.out.println("Application Terminates");
System.exit(0);
}
}
}
}
出力:
Execution in Main Thread....0 Time is :Tue Jun 19 14:21:42 IST 2012 Time is :Tue Jun 19 14:21:43 IST 2012 Execution in Main Thread....1 Time is :Tue Jun 19 14:21:44 IST 2012 Time is :Tue Jun 19 14:21:45 IST 2012 Execution in Main Thread....2 Time is :Tue Jun 19 14:21:46 IST 2012 Time is :Tue Jun 19 14:21:47 IST 2012 Execution in Main Thread....3 Time is :Tue Jun 19 14:21:48 IST 2012 Time is :Tue Jun 19 14:21:49 IST 2012 Execution in Main Thread....4 Time is :Tue Jun 19 14:21:50 IST 2012 Time is :Tue Jun 19 14:21:51 IST 2012 Application Terminates Time is :Tue Jun 19 14:21:52 IST 2012
参考文献
-
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Timer.html
[java.util.Timer
JavaDoc]。
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/TimerTask.html
[java.util.TimerTask
JavaDoc]