Timer和TimerTask完成定時任務

Timer 是用來負責調度定時任務的類。 需要接受一個TimerTask 的對象,然後去執行TimerTask中定義的代碼。

比如:要從今天的14:58分開始,然後每隔2秒中執行一次。

先定義 TimerTask的實例:TimerTaskTest 繼承該類,並實現run 方法:

import java.util.Date;
import java.util.TimerTask;

public class TimerTaskTest extends TimerTask {

	@Override
	public void run() {
		// TODO Auto-generated method stub
		System.out.println("invoke:" + new Date().toLocaleString());
	}
}



然後定義調度類,讓其在14:58開始,每個三秒鐘執行一次:

import java.util.Calendar;
import java.util.Timer;

public class Test {
	public static void main(String[] args) {
		Calendar today = Calendar.getInstance();
		today.set(Calendar.HOUR_OF_DAY, 14);
		today.set(Calendar.MINUTE, 58);
		today.set(Calendar.SECOND, 0);
		Timer timer = new Timer();
		timer.schedule(new TimerTaskTest(), today.getTime(), 3000);
	}
}


正確執行!


若將schedule方法的最後一個參數去掉,則該方法變爲 從定義的時間開始,每天均在該時間點 執行TimerTask中定義的代碼。

比如:

import java.util.Calendar;
import java.util.Timer;

public class Test {
	public static void main(String[] args) {
		Calendar today = Calendar.getInstance();
		today.set(Calendar.HOUR_OF_DAY, 15);
		today.set(Calendar.MINUTE, 06);
		today.set(Calendar.SECOND, 00);
		System.err.println(today.getTime().toLocaleString());
		Timer timer = new Timer();
		timer.schedule(new TimerTaskTest(), today.getTime());
	}
}


則將會在每天的15:06 執行TimerTaskTest中的代碼。

若當前時間已經過了規定的時間,則立即執行一次。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章