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;Output
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();
}
}
これはタスクマネージャの簡単な例です。タイマーが起動します タスク 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