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

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

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

    JDK Timer定時器的應用【轉摘】

    作者:熔 巖
    研究了Quartz企業級定時器后,感覺功能太強大了,如果要執行一些簡單的定時器任務,無須做復雜的控制,也無須保存狀態,那么可以考慮使用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
            ......
     

    posted on 2009-09-18 23:26 張平輝 閱讀(195) 評論(1)  編輯  收藏

    評論

    # re: JDK Timer定時器的應用【轉摘】 2011-10-11 09:15 廣福的老王

    謝謝分享!  回復  更多評論   


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


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    留言簿

    文章分類

    文章檔案

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲精品在线视频观看| 亚洲妇熟XXXX妇色黄| 亚洲免费视频观看| 69式互添免费视频| 亚洲欧洲日产v特级毛片| 99爱在线观看免费完整版| 久久综合日韩亚洲精品色| a视频在线免费观看| 久久青草亚洲AV无码麻豆| 69视频免费在线观看| 亚洲高清资源在线观看| www视频在线观看免费| 亚洲不卡影院午夜在线观看| 我想看一级毛片免费的| 亚洲heyzo专区无码综合| 亚洲第一成人影院| baoyu777永久免费视频 | 亚洲AV无码乱码国产麻豆| 久久久久久久99精品免费观看| 亚洲国产综合91精品麻豆| 四虎在线视频免费观看视频| 亚洲国产精华液2020| 亚洲人成国产精品无码| 亚欧日韩毛片在线看免费网站| 亚洲啪啪免费视频| 亚洲AV无码成H人在线观看| 日本一区午夜艳熟免费| 亚洲成人黄色网址| 免费看一级做a爰片久久| 精品国产污污免费网站入口| 亚洲人成电影亚洲人成9999网 | 精品成在人线AV无码免费看 | 免费在线观看日韩| 两个人看的www免费视频| 国产成人精品亚洲日本在线| 天堂亚洲免费视频| 91成人在线免费视频| 亚洲AV噜噜一区二区三区| 亚洲va无码va在线va天堂| 毛片免费观看视频| 国产在线观看免费av站|