【Java常用類庫】_定時調度筆記
本章目標:
瞭解定時調度的作用。
掌握Timer和TimerTask類的作用
3、具體內容
定時調度,每當一端時間,程式會自動執行,稱為定時調度。
如果要使用定時調度,則必須保證程式始終運行著才可以,也就是說是相當於定時調度是在程式之外又啟動了一個新的線程!
Timer和TimeTask兩個類完成定時調度。
Timer類
Timer類是一種線程設施,可以用來實現某一個時間或某一段時間後,安排某一個任務執行一次,或定期重複執行。該功能要與TimerTask配合使用。TimerTask類用來實現由Timer安排的一次或重複執行的某一個任務。
每一個Timer對象對應是的一個線程,因此計時器所執行的任務應該迅速完成,否則可能會延遲後續任務的執行,而這些後續的任務就有可能堆在一起,等到該任務完成後才能快速連續執行。
schedule()與scheduleAtFixedRate()方法的區別
兩者的區別在與重複執行任務時,對於時間間隔出現延遲的情況處理:
schedule()方法的執行時間間隔永遠是固定的,如果之前出現了延遲的情況,之後也會繼續按照設定好的間隔時間來執行。
scheduleAtFixedRate()方法可以根據出現的延遲時間自動調整下一次間隔的執行時間。
執行個體代碼(間隔一段時間列印目前時間) :
// 完成具體的任務操作
import java.util.TimerTask ;import java.util.Date ;import java.text.SimpleDateFormat ;class MyTask extends TimerTask{ // 任務調度類都要繼承TimerTask public void run(){ SimpleDateFormat sdf = null ; sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ; System.out.println("當前系統時間為:" + sdf.format(new Date())) ; }};
import java.util.Timer ;public class TestTask{ public static void main(String args[]){ Timer t = new Timer() ; // 建立Timer類對象 MyTask mytask = new MyTask() ; // 定義任務 t.schedule(mytask,1000,2000) ; // 設定任務的執行,1秒後開始,每2秒重複 }};