java Timer TimerTask


1,Timer
Timerは実質的にマルチスレッドであり、そのクラスから見ることができます.
private TimerThread thread = new TimerThread(queue);

時間に関連するいくつかの操作に適用され、どのくらいの時間後にアクションを実行し、間隔を置いてアクションを実行します.例えば、時計のプログラムは毎秒私たちのポインタを更新しなければなりません.例えば、心臓の鼓動をシミュレートするには、Timerは良い選択です.
 
2,Timerのスレッドをバックグラウンドスレッドに設定
public class Time {
	private final Timer timer = new Timer(true); 

	public void start() {
		timer.schedule(new TimerTask() {
			public void run() {
				System.out.println("Your egg is ready!"); 
			}
		}, 1000, 1000); 
	}

	public static void main(String[] args) {
		Time eggTimer = new Time(); 
		eggTimer.start();
		try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

1秒後に1秒おきにTimerTaskを実行することを実現した.このTimerが設定したバックグラウンドスレッドは、メインスレッドが終了した後に自動的に終了し、一般的にはTimerがバックグラウンドに設定したほうがいいと思います.この間、私が書いたプログラムが終了したことに気づきました.javawがありますか.exeはタスクマネージャで退出していませんね.私のプログラムが何度も実行されていることに気づきました.タスクマネージャのjavawです.exeはますます多くなって、私の機械もますます遅くなって、ああ、私のプログラムを肯定して、まだ完全に発売していないで、結果は1つのTimerが退出していないことを見つけて、それから私は私のプログラムのすべてのTimerをバックグラウンドに変えました.Timerは普通はすべてある任務を完成して、もしフロントスレッドがなければ、それはもともと存在する意義がなくて、私のプログラムの中で利用したTimerはファイルの変更を検出して、それからフロントプログラムのファイルが変わったことを知らせます.
3,Timerはしばらく運行して、cancelされます
public class Time {
	private final static Timer timer = new Timer(); 

	public void start() {
		timer.schedule(new TimerTask() {
			public void run() {
				System.out.println("Your egg is ready!"); 
			}
		}, 1000, 1000); 
	}

	public static void main(String[] args) {
		Time eggTimer = new Time(); 
		eggTimer.start();
		try {
			Thread.sleep(5000);
			timer.cancel();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
}

 
4,Timerが5回運転した後、cancel
public class Time {
	private final static Timer timer = new Timer(); 

	public void start() {
		timer.schedule(new TimerTask() {
			private int count = 5;
			public void run() {
				System.out.println("Your egg is ready!");
				if(count--==0)
					timer.cancel();
			}
		}, 1000, 1000); 
	}

	public static void main(String[] args) {
		Time eggTimer = new Time(); 
		eggTimer.start();
	}
}