java怎么寫定時任務

1.java 怎么寫定時任務如果要執行一些簡單的定時器任務,無須做復雜的控制,也無須保存狀態,那么可以考慮使用JDK 入門級的定期器Timer來執行重復任務 。
一、原理JDK中,定時器任務的執行需要兩個基本的類: java.util.Timer; java.util.TimerTask;要運行一個定時任務,最基本的步驟如下:1、建立一個要執行的任務TimerTask 。2、創建一個Timer實例,通過Timer提供的schedule()方法,將 TimerTask加入到定時器Timer中,同時設置執行的規則即可 。
當程序執行了Timer初始化代碼后,Timer定時任務就會按照設置去執行 。Timer中的schedule()方法是有多種重載格式的,以適應不同的情況 。
該方法的格式如下: void schedule(TimerTask task, Date time) 安排在指定的時間執行指定的任務 。void schedule(TimerTask task, Date firstTime, long period) 安排指定的任務在指定的時間開始進行重復的固定延遲執行 。
void schedule(TimerTask task, long delay) 安排在指定延遲后執行指定的任務 。void schedule(TimerTask task, long delay, long period) 安排指定的任務從指定的延遲后開始進行重復的固定延遲執行 。
Timer是線程安全的,此類可擴展到大量同時安排的任務(存在數千個都沒有問題) 。其所有構造方法都啟動計時器線程 。
可以調用cancel() 終止此計時器,丟棄所有當前已安排的任務 。purge()從此計時器的任務隊列中移除所有已取消的任務 。
此類不提供實時保證:它使用 Object.wait(long) 方法來安排任務 。TimerTask是一個抽象類,由 Timer 安排為一次執行或重復執行的任務 。
它有一個抽象方法run()----計時器任務要執行的操作 。因此,每個具體的任務類都必須繼承TimerTask類,并且重寫run()方法 。
另外它還有兩個非抽象的方法: boolean cancel() 取消此計時器任務 。long scheduledExecutionTime() 返回此任務最近實際 執行的安排 執行時間 。
二、例子下面用Timer實現一個簡單例子:package stu.timer;import java.util.Date;import java.util.TimerTask;/*** 重復執行的任務** @author leizhimin,2008-10-9 9:20:20*/public class TestTimerTask extends TimerTask { /** * 此計時器任務要執行的操作 。*/ public void run() { Date executeTime = new Date(this.scheduledExecutionTime()); System.out.println("本次任務執行的時間是" + executeTime); }}package stu.timer;import java.util.Timer;import java.util.TimerTask;/*** 測試JDK Timer的執行** @author leizhimin,2008-10-9 9:24:35*/public class TestTimer { public static void main(String[] args) { Timer timer = new Timer(); TimerTask task = new TestTimerTask(); timer.schedule(task, 500L, 1000L); }}運行結果:本次任務執行的時間是Thu Oct 09 09:47:57 CST 2008本次任務執行的時間是Thu Oct 09 09:47:58 CST 2008本次任務執行的時間是Thu Oct 09 09:47:59 CST 2008本次任務執行的時間是Thu Oct 09 09:48:00 CST 2008本次任務執行的時間是Thu Oct 09 09:48:01 CST 2008本次任務執行的時間是Thu Oct 09 09:48:02 CST 2008本次任務執行的時間是Thu Oct 09 09:48:03 CST 2008本次任務執行的時間是Thu Oct 09 09:48:04 CST 2008本次任務執行的時間是Thu Oct 09 09:48:05 CST 2008。
2.在Java中如何設置一個定時任務的代碼應該怎么寫指定定時任務的代碼如下:public void schedule(TimerTask task,Date time)比如,我們希望定時任務2006年7月2日0時0分執行,只要給第二個參數傳一個時間設置為2006年7月2日0時0分的Date對象就可以了.有一種情況是,可能我們的程序啟動的時候,已經是2006年7月3日了,這樣的話,程序一啟動,定時任務就開始執行了.schedule最后一個重載的方法是public void schedule(TimerTask task,Date firstTime,long period)既然號稱是定時任務,我們肯定希望由我們來指定任務指定的時間,顯然上面的方法就不中用了,因為我們不知道程序什么時間開始運行,就沒辦法確定需要延時多少.沒關系,schedule四個重載的方法還沒用完呢.用下面這個就OK了 。