精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

色综合久久久久综合体桃花网| 不卡一区中文字幕| 美女精品久久久| 少妇被狂c下部羞羞漫画| 深夜成人福利| 亚洲猫色日本管| 久久爱av电影| 97成人在线观看| 99热免费精品在线观看| 日韩最新在线视频| 五月婷婷综合在线观看| 99国内精品久久久久| 欧美性猛xxx| 少妇高潮大叫好爽喷水| 黄色av网站在线| 成人毛片老司机大片| 国产精品日韩电影| 国产小视频在线免费观看| 久久精品亚洲欧美日韩精品中文字幕| 亚洲精品一区二区精华| 污污动漫在线观看| 亚洲天堂av在线| 亚洲精品国久久99热| 日韩伦理一区二区三区av在线| 国产ts人妖调教重口男| 免费欧美日韩国产三级电影| 97视频在线播放| 欧美日韩精品一区二区三区视频播放| 精品成人影院| 亚洲精品成人久久久| 四川一级毛毛片| 国产精成人品2018| 欧美性猛交视频| 国产91xxx| 久久香蕉一区| 樱花影视一区二区| 在线播放豆国产99亚洲| 成人影视在线播放| 久久久精品免费免费| 精品国产一二| 好男人在线视频www| 国产麻豆成人精品| 91亚洲精品久久久久久久久久久久| 一级黄色av片| 天堂av在线一区| 97超碰色婷婷| 日韩无码精品一区二区三区| 一区二区中文字| 久久成人精品电影| 黄色片子在线观看| 一本一道久久综合狠狠老| 日韩中文字幕在线| 国产精品69久久久久孕妇欧美| 视频一区在线观看| 亚洲色图50p| av电影在线不卡| av伊人久久| www.欧美三级电影.com| 91香蕉视频在线播放| 久久久人成影片免费观看| 久久精品一本久久99精品| 亚洲精品一区二区三区在线播放| 日韩精品中文字幕第1页| 中文字幕亚洲欧美在线 | 一级特黄aaaaaa大片| 久久精品久久久精品美女| 成人久久久久久| www.污视频| 99久久国产综合精品女不卡| 久久久久久亚洲精品不卡4k岛国 | 无罩大乳的熟妇正在播放| 密臀av在线播放| 色天使色偷偷av一区二区| 亚洲精品中文字幕无码蜜桃| 粉嫩av一区二区三区四区五区| 欧美日韩久久久一区| 亚洲午夜精品一区| 97成人在线| 亚洲精品av在线| 日本少妇xxxxx| 91精品天堂福利在线观看| 欧美激情精品久久久| 青青青国产在线| 久久国产精品99久久久久久老狼| 亚洲综合精品伊人久久| 欧洲精品久久一区二区| 国产无人区一区二区三区| 综合操久久久| 麻豆免费版在线观看| 欧美视频中文字幕| 国产乱淫av片| 精品一级毛片| 高清一区二区三区四区五区| 波多野结衣影片| 国产成人aaa| 欧美在线一区二区三区四区| bt在线麻豆视频| 色婷婷激情久久| 久久久精品视频国产| 伊人久久大香线蕉综合网蜜芽| www高清在线视频日韩欧美| 久久精品亚洲无码| 久久精品国产**网站演员| 国内精品视频免费| 免费大片黄在线| 色综合久久久网| 亚洲少妇一区二区| 日本在线电影一区二区三区| 91精品成人久久| 99久久精品免费看国产交换| 国产亚洲综合性久久久影院| 欧美一区二区视频在线播放| 123成人网| 亚洲精品www| 久草中文在线视频| 蜜桃av一区二区在线观看| 精品一区二区三区国产| 最新av在线播放| 欧美日韩精品一区二区三区蜜桃 | www.桃色.com| 欧美日韩激情| 奇门遁甲1982国语版免费观看高清| 国产视频一区二区三区四区五区| 国产欧美日韩在线| 久久精品国产精品亚洲色婷婷| 亚洲高清999| 中文字幕亚洲欧美| 中文字幕一区2区3区| 久久综合久久综合九色| 婷婷五月综合缴情在线视频| 91国内精品| 久久99亚洲热视| jlzzjlzzjlzz亚洲人| 国产精品毛片久久久久久久| 成年人视频在线免费| 米奇精品关键词| 久久免费视频网站| 欧美在线 | 亚洲| 亚洲va韩国va欧美va精品| 绯色av蜜臀vs少妇| 欧美日韩亚洲一区三区| 99国产在线| 超碰免费公开在线| 91精品国产综合久久福利软件| 中文字幕美女视频| 另类小说视频一区二区| 亚洲欧美国产不卡| 外国成人毛片| 久久精品成人欧美大片| 国产原创中文av| 亚洲人吸女人奶水| 精产国品一区二区三区| 欧美三级网页| 国产精品区一区二区三含羞草| 久久av色综合| 亚洲精品91美女久久久久久久| 日本三级午夜理伦三级三| caoporn国产精品| 国产黄视频在线| 伊人久久大香线蕉综合网站| 国产精品久久久久久超碰| 77导航福利在线| 日韩一区二区三区视频| 久久久久成人片免费观看蜜芽| 国产不卡在线视频| 精品国产免费av| 欧洲杯什么时候开赛| 91免费精品国偷自产在线| 色黄网站在线观看| 亚洲精品久久在线| jizz国产在线| 亚洲欧美aⅴ...| 国产麻豆xxxvideo实拍| 老妇喷水一区二区三区| 欧美爱爱视频网站| 日韩欧美黄色| 国产欧美在线观看| av电影免费在线看| 国产香蕉97碰碰久久人人| 国产精品久久久久久久免费| 亚洲午夜精品一区二区三区他趣| 巨胸大乳www视频免费观看| 奇米一区二区三区| 日韩a级黄色片| 国产不卡一区| 91日韩在线播放| 国产伦精品一区二区三区视频金莲| 伊人久久精品视频| 高h震动喷水双性1v1| 欧美性猛交一区二区三区精品| 91成人福利视频| 国产午夜久久久久| 中文字幕18页| 久久99九九99精品| 9久久9毛片又大又硬又粗| 99久久九九| 久久香蕉综合色| 精品午夜视频| 国产精品福利久久久| 大香伊人久久| 久久精品国产69国产精品亚洲| 少妇高潮一区二区三区99小说| 欧美日韩一二三| 日韩不卡在线播放| 亚洲欧美激情在线| www.涩涩爱| 91蜜桃免费观看视频| 巨乳女教师的诱惑| 免费国产亚洲视频| 国产妇女馒头高清泬20p多| 国产精品毛片一区二区在线看| 精品在线一区| 国产精品自在| 91亚洲一区精品| 国产美女久久| 日本sm极度另类视频| a级片免费在线观看| 久久精品视频亚洲| 日本不卡三区| 伊人av综合网| 超碰在线国产| 亚洲美女动态图120秒| 黑人精品一区二区三区| 日韩一区二区三区视频在线观看| 亚洲专区在线播放| 91高清视频在线| 亚洲欧美综合自拍| 精品成人国产在线观看男人呻吟| 懂色av懂色av粉嫩av| 最新欧美精品一区二区三区| 97在线观看免费视频| 国产亚洲欧美中文| 丰满少妇一区二区| www成人在线观看| 亚洲成人av免费在线观看| 成人午夜视频网站| 国产精品果冻传媒| 粉嫩av一区二区三区粉嫩| 国产人妖在线观看| 懂色av噜噜一区二区三区av| 原创真实夫妻啪啪av| 日本欧美韩国一区三区| 密臀av一区二区三区| 日韩精品国产精品| 日本中文字幕高清| 麻豆精品精品国产自在97香蕉| 青青青在线视频免费观看| 日韩国产欧美三级| 日本xxxx黄色| 国模娜娜一区二区三区| 红桃视频一区二区三区免费| 国产米奇在线777精品观看| 超级砰砰砰97免费观看最新一期| 国产激情91久久精品导航| 少妇熟女视频一区二区三区| 国产91在线看| 欧美肉大捧一进一出免费视频| 99久久精品国产一区二区三区| 艳妇乳肉亭妇荡乳av| 26uuu国产一区二区三区| 国产aⅴ激情无码久久久无码| 久久综合视频网| 国产精品酒店视频| 最新热久久免费视频| 久久综合加勒比| 欧美日韩综合视频网址| 波多野结衣在线电影| 欧美久久久久久蜜桃| 精品人妻一区二区三区麻豆91 | 免费成人深夜夜行p站| 久久久不卡网国产精品一区| 一级片黄色录像| 一区二区三区欧美久久| 日韩精品一区二区不卡| 91精品福利视频| 91中文字幕在线视频| 精品卡一卡二卡三卡四在线| 欧美777四色影视在线| 中文字幕日韩免费视频| 色婷婷在线播放| 热久久美女精品天天吊色| av免费在线一区| av色综合网| 国产99久久久国产精品成人免费 | 在线综合视频| 一区二区三区 日韩| 国产**成人网毛片九色| 丰满少妇高潮一区二区| 亚洲男人的天堂一区二区| 伊人手机在线视频| 91精品国产福利在线观看| 天堂av在线免费观看| 欧美xxxx14xxxxx性爽| 欲香欲色天天天综合和网| 国产在线视频2019最新视频| 国内自拍欧美| 欧美 另类 交| 久久伊人亚洲| 精品国产一二区| 国产精品污污网站在线观看| 九九精品在线观看视频 | 国内精品国产成人国产三级| 亚洲女人天堂色在线7777| 自由的xxxx在线视频| 国产精品美女免费视频| 国产精品巨作av| 好吊色视频988gao在线观看| 老司机午夜精品视频| 无码国产69精品久久久久网站| 国产精品亲子伦对白| 婷婷激情五月网| 欧美成人免费网站| 日韩毛片久久久| 国产精品96久久久久久| 精品欧美午夜寂寞影院| 在线综合视频网站| 三级影片在线观看欧美日韩一区二区 | 成人午夜免费影院| 一本大道av伊人久久综合| 高清乱码毛片入口| 伦理中文字幕亚洲| 欧美亚洲人成在线| 亚洲国产一区二区精品视频| 久久午夜视频| 久久精品一区二区免费播放 | 国产suv精品一区| 国产911在线观看| 国产自产视频一区二区三区| 国产日韩精品中文字无码| 在线影视一区二区三区| 视频二区在线| 97av视频在线| 色天下一区二区三区| 日本人体一区二区| 成人avav在线| 国产成人无码一区二区三区在线| 欧美精品一区二区不卡| 超碰97免费在线| 精品国产乱码久久久久久久软件 | 97成人精品视频在线观看| www.久久东京| 日本丰满少妇xxxx| 成人精品视频网站| 日韩美女黄色片| 日韩大陆毛片av| 午夜裸体女人视频网站在线观看| 国产一区在线观| 亚洲欧美日韩视频二区| 魔女鞋交玉足榨精调教| 日本精品一级二级| 2021av在线| 亚洲自拍小视频| 欧美日韩国产欧| 污网站免费观看| 都市激情亚洲色图| 加勒比一区二区三区在线| 国产99视频精品免视看7| 加勒比久久综合| 亚洲天堂2018av| 亚洲蜜臀av乱码久久精品| 丰满肥臀噗嗤啊x99av| 2020国产精品视频| 少妇精品久久久| 伊人色在线视频| 亚洲午夜精品在线| 国产系列在线观看| 成人免费观看a| 很黄很黄激情成人| 国产肉体xxxx裸体784大胆| 91久久线看在观草草青青| 欧美激情午夜| 国产精品高清一区二区三区| 国产欧美短视频| 日本不卡一区视频| 日韩欧美一区二区三区在线| 538在线视频| 日韩成人在线资源| 国产美女在线精品| 日韩手机在线视频| 美女少妇精品视频| 最新精品国偷自产在线| 亚洲a级黄色片| 精品久久久久久亚洲国产300| 精品视频一二区| 91久久大香伊蕉在人线| 国产精品久久久久久模特 | 国产三级在线观看| 91免费看蜜桃| 久久精品人人| 麻豆亚洲av熟女国产一区二| 亚洲精品自拍视频| 国产成年精品| 欧美成人黑人猛交| 一区二区三区四区不卡视频| 免费理论片在线观看播放老| 亚洲aa中文字幕| 日韩精品一级中文字幕精品视频免费观看 | 欧美色女视频| 国产一级免费片| 911精品国产一区二区在线|