<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 17, comments - 1, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    java中的時間操作 定時任務

    Posted on 2006-09-18 20:25 HotJava 閱讀(705) 評論(0)  編輯  收藏

    關于定時任務,似乎跟時間操作的聯系并不是很大,但是前面既然提到了定時任務,索性在這里一起解決了。

    設置定時任務很簡單,用 Timer 類就搞定了。

    ?

    一、延時執行

    ?

    首先,我們定義一個類,給它取個名字叫 TimeTask ,我們的定時任務,就在這個類的 main 函數里執行。代碼如下:

    package test;

    import java.util.Timer;

    public class TimeTask {

    ?

    public static void main(String[] args){

    Timer timer = new Timer();

    timer.schedule(new Task(), 60 * 1000);

    }

    }

    ?

    解釋一下上面的代碼。

    上面的代碼實現了這樣一個功能,當 TimeTask 程序啟動以后,過一分鐘后執行某項任務。很簡單吧:先 new 一個 Timer 對象,然后調用它的 schedule 方法,這個方法有四個重載的方法,這里我們用其中一個,

    public void schedule(TimerTask?task,long?delay)

    ?

    首先,第一個參數

    ?

    第一個參數就是我們要執行的任務。

    這是一個TimerTask對象,確切點說是一個實現 TimerTask 的類的對象,因為 TimerTask 是個抽象類。上面的代碼里面, Task 就是我們自己定義的實現了 TimerTask 的類,因為是在同一個包里面,所以沒有顯性的 import 進來。 Task 類的代碼如下?

    ?

    package test;

    import java.util.TimerTask;

    public class Task extends TimerTask {

    public void run(){

    System.out.println("定時任務執行");

    }

    }

    我們的 Task 必須實現 TimerTask 的方法 run ,要執行的任務就在這個 run 方法里面,這里,我們只讓它往控制臺打一行字。

    ?

    第二個參數

    ?

    第二個參數是一個 long 型的值。這是延遲的時間,就是從程序開始以后,再過多少時間來執行定時任務。這個 long 型的值是毫秒數,所以前面我們的程序里面,過一分鐘后執行用的參數值就是 60 * 1000。

    ?

    二、循環執行

    ?

    設置定時任務的時候,往往我們需要重復的執行這樣任務,每隔一段時間執行一次,而上面的方法是只執行一次的,這樣就用到了schedule方法的是另一個重載函數

    public void schedule(TimerTask?task,long?delay,long?period)

    ?

    前兩個參數就不用說什么了,最后一個參數就是間隔的時間,又是個 long 型的毫秒數(看來 java 里涉及到時間的,跟這個 long 是脫不了干系了),比如我們希望上面的任務從第一次執行后,每個一分鐘執行一次,第三個參數值賦60 * 1000就 ok 了。

    ?

    三、指定執行時間

    ?

    既然號稱是定時任務,我們肯定希望由我們來指定任務指定的時間,顯然上面的方法就不中用了,因為我們不知道程序什么時間開始運行,就沒辦法確定需要延時多少。沒關系,schedule四個重載的方法還沒用完呢。用下面這個就 OK 了:

    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)

    ?

    沒必要說什么了吧 :)

    ?

    四、 j2ee 中的定時任務

    在實際的項目中,往往定時任務需要對 web 工程中的資源進行操作,這樣一來,用上面的單個程序的方式可能就有點力不從心了,因為很多 web 工程的資源它操作不到。

    解決的辦法是,使用 Servlet ,把執行定時任務的那些代碼放到 Servlet init() 函數里就可以了,這個 easy ,就沒有必要再寫示例代碼了吧(嘿嘿,其實是作者太懶了)。?


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲精品国产福利一二区| 特级淫片国产免费高清视频| 亚洲一本大道无码av天堂| 在线视频亚洲一区| 免费国产真实迷j在线观看| 亚洲人成在久久综合网站| 青青草a免费线观a| 亚洲影院天堂中文av色| 成人午夜性A级毛片免费| 亚洲av成人一区二区三区观看在线 | 99在线视频免费| 亚洲视频在线观看视频| 青青视频观看免费99| 亚洲AV无码专区在线观看成人| 国产精品jizz在线观看免费| 污污视频免费观看网站| 精品久久香蕉国产线看观看亚洲| 野花香高清视频在线观看免费 | 亚洲综合av一区二区三区| 在线观看视频免费国语| 国产亚洲精品欧洲在线观看| 亚洲欧洲中文日韩av乱码| 免费无码又爽又刺激一高潮| 亚洲色欲或者高潮影院| 日本免费v片一二三区| 久青草视频在线观看免费| 91亚洲国产成人久久精品网址 | 日韩人妻一区二区三区免费| 亚洲妇女水蜜桃av网网站| 国产午夜影视大全免费观看 | 亚洲毛片免费视频| jizzjizz亚洲日本少妇| 国产亚洲综合一区柠檬导航| 免费黄色网址网站| 欧亚一级毛片免费看| 久久国产亚洲高清观看| 免费人成视网站在线观看不卡| 免费成人在线电影| 亚洲精华液一二三产区| 久久久久久亚洲av成人无码国产 | 一本色道久久综合亚洲精品高清|