JavaスレッドをtimerおよびtimerTaskと同期する

java.util.timer は、スケジュールに使用できるクラスです (java scheduler) タスクは、将来の実行のためにスレッドに関連付けられます。タスクは 1 回だけ、または一定の間隔で繰り返し実行できます。

複数のスレッドで timer java.

java.util.TimerTask は、Runnableです。このクラスを継承して、TimerTask を使用してスケジュールされます。timerです。timer は、メソッド wait and notify を使用してプロセスをスケジュールします。

timerの実装例を次に示します:

import java.awt.Toolkit;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class TimerTask{

static Toolkit toolkit;

public TimerTask(){
toolkit = Toolkit.getDefaultToolkit();
TimerTask timerTask = new executetask();
//timerタスクを deamon
Timer timer = new Timer(true);
//事前定義された時間内にタスクを将来の実行のためにshedule
timer.schedule(timerTask, 0, 1*1000);
System.out.println("TimerTaskが開始されました");
//10秒後にキャンセル
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
timer.cancel();
System.out.println("TimerTaskが停止しました");
}

class executetask extends TimerTask {
@Override
public void run() {
System.out.println("Starts: "+new Date());
{
//タスクを完了するまで 2 秒
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
toolkit.beep();
System.out.println("終了: "+new Date());
}
}

public static void main(String args[]){
new TimerTask();
}
}
Output

shedule tasks timer java

これはタスクマネージャの簡単な例です。タイマーが起動します タスク 1 秒ごと (1000 ミリ秒) に繰り返し、一定の間隔で。schedule() 引数として取ります:
  • La タスク to be ordered.
  • The time before the theタスク が実行されます。in milliseconds.
  • の連続した実行間の時間タスク 
このプログラムをコンパイルした結果、タイマーは実行中のプロセスが終了するのを待っているため、キュー内の次のプロセスに進むことができます。

Timer.cancel() はタイマーとすべてのタスク キュー内。それが終わったら、それはデーモン・スレッドも終了します。

References:
Oracle: Timer class
Oracle: timerTask クラス
java2s:Toolkit beep
javapoint: daemon thread