精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Timer和TimerTask詳解

開發 后端
本文主要介紹了Timer和TimerTask這兩個工具,而以下內容根據The JavaTM Tutorial和相關API doc翻譯整理,以供日后參考:

以下內容根據 The JavaTM Tutorial 和相關API doc翻譯整理,以供日后參考:

1.概覽

Timer是一種定時器工具,用來在一個后臺線程計劃執行指定任務。它可以計劃執行一個任務一次或反復多次。

TimerTask一個抽象類,它的子類代表一個可以被Timer計劃的任務。

簡單的一個例程:

  1. import java.util.Timer;  
  2. import java.util.TimerTask;  
  3.  
  4. /**  
  5. * Simple demo that uses java.util.Timer to schedule a task to execute  
  6. * once 5 seconds have passed.  
  7. */ 
  8.  
  9. public class Reminder {  
  10.     Timer timer;  
  11.  
  12.     public Reminder(int seconds) {  
  13.         timer = new Timer();  
  14.         timer.schedule(new RemindTask(), seconds*1000);  
  15.     }  
  16.  
  17.     class RemindTask extends TimerTask {  
  18.         public void run() {  
  19.             System.out.println("Time's up!");  
  20.             timer.cancel(); //Terminate the timer thread  
  21.         }  
  22.     }  
  23.  
  24.     public static void main(String args[]) {  
  25.         System.out.println("About to schedule task.");  
  26.         new Reminder(5);  
  27.         System.out.println("Task scheduled.");  
  28.     }  
  29. }  

運行這個小例子,你會首先看到:

About to schedule task.

5秒鐘之后你會看到:

Time's up!

這個小例子可以說明一些用Timer線程實現和計劃執行一個任務的基礎步驟:

  •  實現自定義的TimerTask的子類,run方法包含要執行的任務代碼,在這個例子里,這個子類就是RemindTask。
  • 實例化Timer類,創建計時器后臺線程。
  • 實例化任務對象 (new RemindTask()).
  • 制定執行計劃。這里用schedule方法,***個參數是TimerTask對象,第二個參數表示開始執行前的延時時間(單位是milliseconds,這里定義了5000)。還有一種方法可以指定任務的執行時間,如下例,指定任務在11:01 p.m.執行:
  1. //Get the Date corresponding to 11:01:00 pm today.  
  2. Calendar calendar = Calendar.getInstance();  
  3. calendar.set(Calendar.HOUR_OF_DAY, 23);  
  4. calendar.set(Calendar.MINUTE, 1);  
  5. calendar.set(Calendar.SECOND, 0);  
  6. Date time = calendar.getTime();  
  7.  
  8. timer = new Timer();  
  9. timer.schedule(new RemindTask(), time); 

2.終止Timer線程

默認情況下,只要一個程序的timer線程在運行,那么這個程序就會保持運行。當然,你可以通過以下四種方法終止一個timer線程:

調用timer的cancle方法。你可以從程序的任何地方調用此方法,甚至在一個timer task的run方法里。

讓timer線程成為一個daemon線程(可以在創建timer時使用new Timer(true)達到這個目地),這樣當程序只有daemon線程的時候,它就會自動終止運行。

當timer相關的所有task執行完畢以后,刪除所有此timer對象的引用(置成null),這樣timer線程也會終止。

調用System.exit方法,使整個程序(所有線程)終止。

Reminder的例子使用了***種方式。在這里不能使用第二種方式,因為這里需要程序保持運行直到timer的任務執行完成,如果設成daemon,那么當main線程結束的時候,程序只剩下timer這個daemon線程,于是程序不會等timer線程執行task就終止了。

有些時候,程序的終止與否并不只與timer線程有關。舉個例子,如果我們使用AWT來beep,那么AWT會自動創建一個非daemon線程來保持程序的運行。

  1. import java.util.Timer;  
  2. import java.util.TimerTask;  
  3. import java.awt.Toolkit;  
  4.  
  5. /**  
  6. * Simple demo that uses java.util.Timer to schedule a task to execute  
  7. * once 5 seconds have passed.  
  8. */ 
  9.  
  10. public class ReminderBeep {  
  11.     Toolkit toolkit;  
  12.     Timer timer;  
  13.  
  14.     public ReminderBeep(int seconds) {  
  15.         toolkit = Toolkit.getDefaultToolkit();  
  16.         timer = new Timer();  
  17.         timer.schedule(new RemindTask(), seconds*1000);  
  18.     }  
  19.  
  20.     class RemindTask extends TimerTask {  
  21.         public void run() {  
  22.             System.out.println("Time's up!");  
  23.     toolkit.beep();  
  24.     //timer.cancel(); //Not necessary because we call System.exit  
  25.     System.exit(0);   //Stops the AWT thread (and everything else)  
  26.         }  
  27.     }  
  28.  
  29.     public static void main(String args[]) {  
  30. System.out.println("About to schedule task.");  
  31.         new ReminderBeep(5);  
  32. System.out.println("Task scheduled.");  
  33.     }  

3.反復執行一個任務

先看一個例子:

  1. public class AnnoyingBeep {  
  2.     Toolkit toolkit;  
  3.     Timer timer;  
  4.  
  5.     public AnnoyingBeep() {  
  6.         toolkit = Toolkit.getDefaultToolkit();  
  7.         timer = new Timer();  
  8.         timer.schedule(new RemindTask(),  
  9.                0,        //initial delay  
  10.                1*1000);  //subsequent rate  
  11.     }  
  12.  
  13.     class RemindTask extends TimerTask {  
  14.         int numWarningBeeps = 3;  
  15.  
  16.         public void run() {  
  17.             if (numWarningBeeps > 0) {  
  18.                 toolkit.beep();  
  19.                 System.out.println("Beep!");  
  20.                 numWarningBeeps--;  
  21.             } else {  
  22.                 toolkit.beep();   
  23.                 System.out.println("Time's up!");  
  24.                 //timer.cancel(); //Not necessary because we call System.exit  
  25.                 System.exit(0);   //Stops the AWT thread (and everything else)  
  26.             }  
  27.         }  
  28.     }  
  29.     ...  
  30. }   

執行,你會看到如下輸出:

  1. Task scheduled.  
  2. Beep!   
  3. Beep! //one second after the first beep  
  4. Beep! //one second after the second beep  
  5. Time's up! //one second after the third beep 

這里使用了三個參數的schedule方法用來指定task每隔一秒執行一次。如下所列為所有Timer類用來制定計劃反復執行task的方法 :

  •  schedule(TimerTask task, long delay, long period)
  • schedule(TimerTask task, Date time, long period)
  • scheduleAtFixedRate(TimerTask task, long delay, long period)
  • scheduleAtFixedRate(TimerTask task, Date firstTime, long period)

當計劃反復執行的任務時,如果你注重任務執行的平滑度,那么請使用schedule方法,如果你在乎的是任務的執行頻度那么使用scheduleAtFixedRate方法。 例如,這里使用了schedule方法,這就意味著所有beep之間的時間間隔至少為1秒,也就是說,如果有一個beap因為某種原因遲到了(未按計劃執行),那么余下的所有beep都要延時執行。如果我們想讓這個程序正好在3秒以后終止,無論哪一個beep因為什么原因被延時,那么我們需要使用scheduleAtFixedRate方法,這樣當***個beep遲到時,那么后面的beep就會以最快的速度緊密執行(***限度的壓縮間隔時間)。

4.進一步分析schedule和scheduleAtFixedRate

(1)2個參數的schedule在制定任務計劃時, 如果指定的計劃執行時間scheduledExecutionTime<=systemCurrentTime,則task會被立即執行。scheduledExecutionTime不會因為某一個task的過度執行而改變。

(2)3個參數的schedule在制定反復執行一個task的計劃時,每一次執行這個task的計劃執行時間隨著前一次的實際執行時間而變,也就是scheduledExecutionTime(第n+1次)=realExecutionTime(第n次)+periodTime。也就是說如果第n次執行task時,由于某種原因這次執行時間過長,執行完后的systemCurrentTime>=scheduledExecutionTime(第n+1次),則此時不做時隔等待,立即執行第n+1次task,而接下來的第n+2次task的scheduledExecutionTime(第n+2次)就隨著變成了realExecutionTime(第n+1次)+periodTime。說白了,這個方法更注重保持間隔時間的穩定。

(3)3個參數的scheduleAtFixedRate在制定反復執行一個task的計劃時,每一次執行這個task的計劃執行時間在最初就被定下來了,也就是scheduledExecutionTime(第n次)=firstExecuteTime+n*periodTime;如果第n次執行task時,由于某種原因這次執行時間過長,執行完后的systemCurrentTime>=scheduledExecutionTime(第n+1次),則此時不做period間隔等待,立即執行第n+1次task,而接下來的第n+2次的task的scheduledExecutionTime(第n+2次)依然還是firstExecuteTime+(n+2)*periodTime這在***次執行task就定下來了。說白了,這個方法更注重保持執行頻率的穩定。

5.一些注意的問題

  • 每一個Timer僅對應唯一一個線程。
  • Timer不保證任務執行的十分精確。
  • Timer類的線程安全的。

原文鏈接:http://blog.csdn.net/xiaozhang0731/article/details/5688345

【編輯推薦】

  1. 在JDK和Eclipse下Java Applet的編寫和運行方式
  2. Java中的Enum的使用與分析
  3. 按權重選取目標的Java算法
  4. 通用Java文件上傳和下載組件的設計與實現
  5. 5種JavaScript調用函數的方法
責任編輯:林師授 來源: xiaozhang0731的博客
相關推薦

2009-09-07 05:50:59

C# Timer用法

2009-06-16 11:39:17

JBoss端口修改

2009-06-18 10:27:42

Spring Time

2021-07-30 15:50:54

Python定時器JavaScrip

2023-10-07 08:26:40

多線程數據傳遞數據共享

2010-01-28 09:45:16

Android Tim

2009-07-17 16:32:34

Timer對象Swing

2012-05-08 13:58:37

SharePoint

2009-08-25 13:38:35

C# Timer組件

2011-05-31 16:50:35

Android 線程

2017-04-26 08:51:36

MongoDB集群實戰

2019-01-21 15:57:29

VLANVXLAN局域網

2009-07-21 13:43:53

ASP和JSP比較

2011-04-02 09:17:38

2009-06-22 16:19:45

JavaBeansEJBPOJO

2009-06-11 10:00:50

Glassfish安裝GlassFish配置

2010-02-03 15:58:51

C++ timer

2009-12-25 10:59:08

WPF Timer

2010-01-22 15:25:46

VB.NET Time

2016-03-28 10:39:05

Python迭代迭代器
點贊
收藏

51CTO技術棧公眾號

7777免费精品视频| 日韩精品一级| 亚洲成人中文| 亚洲久久久久久久久久久| 青青久久aⅴ北条麻妃| 国产又粗又长又爽| 日韩电影网站| 亚洲同性gay激情无套| 成人h在线播放| 免费污污视频在线观看| 希岛爱理一区二区三区| 欧美精品一区二区三区视频| 欧美 日本 亚洲| yjizz视频网站在线播放| 韩日精品视频一区| 欧美在线亚洲在线| 中国毛片直接看| 日韩大胆成人| 亚洲成人国产| 国产精品一区免费视频| 992tv在线成人免费观看| 五月天精品在线| 99re8这里有精品热视频8在线| 狠狠色狠狠色综合日日小说| 一区二区三区视频在线播放| 亚洲精品国产精品乱码| 99欧美视频| 亚洲精品一区二区久| 色欲无码人妻久久精品| 欧美色片在线观看| 婷婷综合久久一区二区三区| 一区二区精品国产| 男人天堂网在线| 粉嫩aⅴ一区二区三区四区| 国产精品福利网| 天堂网av手机版| 欧美破处大片在线视频| 色婷婷**av毛片一区| 特级西西人体wwwww| 综合欧美亚洲| 欧美一区午夜精品| 中文字幕av专区| 在线免费日韩片| 亚洲国产精品久久久男人的天堂| 亚洲天堂av免费在线观看| 飘雪影视在线观看免费观看| 成人av在线观| 国产精品12| 精品国自产拍在线观看| 国产一区二区三区精品欧美日韩一区二区三区| 日本一区二区不卡| 成年人免费高清视频| 激情综合自拍| 欧美激情国内偷拍| 久久久久久久久久久久久女过产乱| 一区二区三区视频免费观看| 亚洲成人黄色网址| 伊人影院在线观看视频| 免费亚洲电影| 午夜一区二区三区视频| 日韩中文一区| 免费在线视频一级不卡| 97精品视频在线观看自产线路二| 国产女主播一区二区| 免费成人在线看| 波多野结衣亚洲一区| 精品欧美一区二区久久久伦| 日韩一级片免费看| 99久久国产综合精品女不卡| 欧美欧美一区二区| 成人jjav| 国产精品高清亚洲| 色中文字幕在线观看| 国产日产一区二区三区| 亚洲欧美aⅴ...| 成年人视频网站免费| 精精国产xxxx视频在线野外| 91官网在线观看| 911福利视频| 亚洲国产欧美在线观看| 日韩av在线免费| 一级黄色性视频| 亚洲电影影音先锋| 久久久久免费视频| 高清乱码免费看污| 精品国产亚洲一区二区三区大结局| 欧美日韩影院| 久久久久久久久久久国产| 黄网在线观看视频| 蜜臀av一区二区| 岛国视频一区免费观看| 男操女在线观看| 亚洲视频一区二区在线| 妞干网在线视频观看| 成人黄色视屏网站| 日韩欧美高清一区| 波多野结衣av在线免费观看| 999久久久国产精品| 欧美激情亚洲自拍| 黄色av网站免费观看| 国产在线麻豆精品观看| 九九99久久| 日韩免费网站| 精品久久久中文| 日韩av一卡二卡三卡| 丁香婷婷成人| 日韩在线观看免费av| 久久狠狠高潮亚洲精品| 激情图片小说一区| 裸模一区二区三区免费| 99热国产在线| 欧美性猛片aaaaaaa做受| 99热超碰在线| 天天操综合网| 国产成人aa精品一区在线播放| www.日韩高清| 国产日产精品一区二区三区四区的观看方式| 国产精品一级片| 国产精品乱码| 超碰在线观看免费| 欧美网站大全在线观看| 久久人妻少妇嫩草av无码专区| 久久精品免费一区二区三区| 国产成人精品视频在线观看| 欧美综合视频在线| 亚洲精品欧美专区| 91精品999| 激情综合网五月| 91成品人片a无限观看| 国内精品久久久久久久久久| 17c精品麻豆一区二区免费| 日av中文字幕| 亚洲激情播播| 91精品国产99| 日本黄视频在线观看| 亚洲一区日韩精品中文字幕| 无套内谢丰满少妇中文字幕| 欧美独立站高清久久| 国产成人a亚洲精品| 性感美女福利视频| 五月综合激情婷婷六月色窝| 佐佐木明希电影| 国产精品porn| 亚洲xxxx在线| 羞羞电影在线观看www| 欧美精品免费视频| 永久免费观看片现看| 秋霞午夜av一区二区三区| 欧美精品一区二区三区在线四季| av影院在线免费观看| 亚洲成人激情在线| 国产精品久久精品| 中国a一片一级一片| 国产农村妇女精品| 亚洲最大综合网| 91av亚洲| 日韩国产欧美精品一区二区三区| 精品91久久久| 久久毛片高清国产| 熟女人妇 成熟妇女系列视频| 国产探花一区在线观看| 日本精品在线视频| 国产在线观看精品一区| 欧美无乱码久久久免费午夜一区 | 亚洲视频在线观看网站| 高清乱码免费看污| 国产精品免费人成网站| 天天综合天天添夜夜添狠狠添| 亚洲情侣在线| 国产精品二区二区三区| 亚洲综合电影| 中文字幕一区二区三区电影| 国产乱码精品一区二区三区精东| 亚洲激情第一区| 一区二区三区少妇| 日韩国产精品久久久久久亚洲| 一区二区精品在线| 伊人精品久久| 日本亚洲欧美成人| www.久久ai| 亚洲国产日韩欧美综合久久| 免费看毛片网站| 亚洲美女淫视频| 日韩片在线观看| 毛片不卡一区二区| 亚洲精品国产品国语在线app| 国产一级免费大片| 一本色道久久精品| 日韩电影天堂视频一区二区| 国产不卡精品在线| 欧美专区在线观看| 午夜羞羞小视频在线观看| 日韩精品在线视频| 国产特级黄色片| 一本一本大道香蕉久在线精品| 午夜精品一区二区三级视频| 91婷婷韩国欧美一区二区| 污色网站在线观看| 亚洲清纯自拍| 国产日韩视频在线播放| 天堂日韩电影| 91精品入口蜜桃| 性欧美1819sex性高清| 色综合视频一区中文字幕| 成年女人的天堂在线| 精品国产露脸精彩对白| 艳妇乳肉豪妇荡乳av| 欧美日韩中文字幕在线视频| 欧美精品久久久久久久久46p| 91网站最新网址| wwwxxx色| 精品一区二区久久| 韩国日本美国免费毛片| 在线成人国产| 欧美日韩一级在线| 国产99精品一区| 国产精品swag| 国产精久久久| 国产精品视频免费在线| 亚洲美女久久精品| 色综合久久久久| 亚洲精品不卡| 欧美日日夜夜| 成人黄视频免费| avtt久久| 国产美女精品免费电影| 欧美xxx视频| 欧美性在线视频| 黄色av免费观看| 欧美精品免费视频| 亚洲天堂avav| 欧美图区在线视频| 日韩免费av网站| 日韩欧美在线观看| 999这里只有精品| 久久久国产精品午夜一区ai换脸 | 国产成人aaa| 在线黄色免费看| 日韩高清欧美激情| 虎白女粉嫩尤物福利视频| 一区二区三区成人精品| 日韩日韩日韩日韩日韩| 亚洲美女色禁图| 日韩中文字幕在线免费| 91久久中文| 无码专区aaaaaa免费视频| 国产精品www994| 免费高清一区二区三区| 激情欧美丁香| 18岁网站在线观看| 男女av一区三区二区色多| 欧美私人情侣网站| 日韩精品一二三| 性猛交ⅹ×××乱大交| 久久99九九99精品| 国产精品久久久久久久av福利| 激情综合色综合久久综合| 蜜桃福利午夜精品一区| 韩国av一区二区| 永久免费看片在线观看| 成人一级片在线观看| 亚洲精品乱码久久久久久不卡| 95精品视频在线| 熟女高潮一区二区三区| 欧美激情资源网| 久久精品在线观看视频| 亚洲靠逼com| 日本熟伦人妇xxxx| 欧美视频二区36p| 中文字幕二区三区| 日韩一区二区在线观看视频| 丁香六月天婷婷| 亚洲免费影视第一页| 在线视频1区2区| 中文字幕日本不卡| 中国一区二区三区| 亚洲欧美综合久久久| 精品少妇在线视频| 日韩激情视频在线观看| caoporm在线视频| 不卡一二三区首页| 日本高清黄色片| 一级精品视频在线观看宜春院| 日韩精品一区二区三| 欧美视频一区二区在线观看| 99久久夜色精品国产亚洲| 日韩激情片免费| 欧美尤物美女在线| 国语自产精品视频在线看一大j8| 日韩精品专区| 99视频网站| 欧美色图一区| 国产一二三在线视频| 日本美女一区二区| 亚洲成a人无码| 欧美国产成人精品| 日韩三级免费看| 欧美日韩成人综合天天影院| 天天摸天天碰天天爽天天弄| 日韩视频第一页| 中文字幕 在线观看| 97netav| 精品国产一区一区二区三亚瑟| 免费的av在线| 美女网站一区二区| 天天躁日日躁aaaxxⅹ | 熟女视频一区二区三区| 久久精品国语| 女性生殖扒开酷刑vk| 国产精品妹子av| 日韩精品在线观看免费| 日韩欧美成人午夜| 免费黄色网页在线观看| 国产97在线视频| 国产欧美一区二区三区米奇| 黄频视频在线观看| 日韩电影在线免费观看| 无码任你躁久久久久久老妇| 蜜桃精品wwwmitaows| 欧美精品一区二区免费| 97人人做人人爽香蕉精品| 精品免费视频123区| 好吊一区二区三区| 波多野结衣免费观看| 国产精品女同互慰在线看| 一级片免费在线播放| 亚洲精品国产品国语在线| 日本欧美电影在线观看| 91久久精品日日躁夜夜躁国产| 欧美色女视频| 成年人在线观看视频免费| 久久夜色精品国产噜噜av| 日韩欧美大片在线观看| 欧美变态口味重另类| 色在线视频网| 3d精品h动漫啪啪一区二区| 久久精品亚洲人成影院| 天堂一区在线观看| 国产精品少妇自拍| 国产情侣免费视频| 国产香蕉97碰碰久久人人| 欧美xx视频| 午夜精品电影在线观看| 日韩经典中文字幕一区| 久久久视频6r| 欧美亚洲高清一区| 亚乱亚乱亚洲乱妇| 国产在线拍揄自揄视频不卡99| 日韩情爱电影在线观看| 久久99999| 亚洲欧美自拍偷拍| 精品欧美在线观看| 久久久久久国产精品| 理论片一区二区在线| 欧美成人精品欧美一级乱| 国产欧美视频一区二区| 夜夜嗨aⅴ一区二区三区| 日韩视频一区在线| 深夜福利一区二区三区| 免费看毛片的网址| 欧美色综合一区二区三区| 欧美一级日韩一级| 免费在线观看的电影网站| 国产视频一区二区三区四区| 国产日韩1区| 手机看片福利视频| 51精品国自产在线| 国产蜜臀在线| 欧美精品一区二区视频| 久久精品72免费观看| 亚洲国产精品免费在线观看| 亚洲精品一区二区三区精华液| 午夜影视一区二区三区| 亚洲欧洲精品一区二区| 国产成人精品免费看| 欧美啪啪小视频| 色老汉一区二区三区| 91在线不卡| 国产激情一区二区三区在线观看| 免费亚洲婷婷| 女同久久另类69精品国产| 精品国产电影一区二区| 婷婷综合六月| 日本黄xxxxxxxxx100| 99精品视频在线免费观看| 欧美激情一区二区三区免费观看 | 亚洲国产精品热久久| 久久久一本精品| 国产日韩欧美大片| 久久久久久免费毛片精品| a毛片在线免费观看| 日本精品视频在线| 中文字幕一区二区精品区| 色噜噜在线观看| 91精品国产一区二区人妖| 美脚恋feet久草欧美| 91免费版看片| 国产精品免费久久| 偷拍25位美女撒尿视频在线观看| 91嫩草在线视频|