日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Timer的schedule和scheduleAtFixedRate方法的区别解析

發布時間:2025/4/16 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Timer的schedule和scheduleAtFixedRate方法的区别解析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在java中,Timer類主要用于 定時性、周期性任務的觸發,這個類中有兩個方法比較難理解,那就是schedule和scheduleAtFixedRate方法,在這里就用實例分析一下

(1)schedule方法:“fixed-delay”;如果第一次執行時間被delay了,隨后的執行時間 按照 上一次 實際執行完成的時間點進行計算
(2)scheduleAtFixedRate方法:“fixed-rate”;如果第一次執行時間被delay了,隨后的執行時間 按照 上一次開始的 時間點進行計算,并且為了”catch up”會多次執行任務,TimerTask中的執行體 需要考慮同步
[c-sharp] view plaincopy
  • SimpleDateFormat?dateFormatter?=?new?SimpleDateFormat("yyyy/MM/dd?HH:mm:ss");??
  • Date?startDate?=?dateFormatter.parse("2010/11/26?00:20:00");??
  • Timer?timer?=?new?Timer();??
  • timer.scheduleAtFixedRate(new?TimerTask(){??
  • ???public?void?run()??
  • ???{??
  • ???????System.out.println("execute?task!"?+?this.scheduledExecutionTime());??
  • ???}??
  • },startDate,3*60*1000);??

  • 以上的代碼,表示在2010-11-26 00:20:00秒開始執行,每3分鐘執行一次
    假設在2010/11/26 00:27:00執行
    以上會打印出3次
    execute task!?? 00:20
    execute task!?? 00:23??? catch up
    execute task!?? 00:26??? catch up
    下一次執行時間是00:29,相對于00:26
    當換成schedule方法時,在2010/11/26 00:27:00執行
    會打印出1次
    execute task!?? 00:20?? 無catch up
    下一次執行時間為00:30,相對于00:27

    以上考慮的都是在你設定的timer開始時間后,程序才被執行

    當執行任務的時間大于周期間隔時,會發生什么呢?
    (1)schedule方法:下一次執行時間相對于 上一次 實際執行完成的時間點 ,因此執行時間會不斷延后
    (2)scheduleAtFixedRate方法:下一次執行時間相對于 上一次開始的 時間點,因此執行時間不會延后, 存在并發性
    以下例程序來測試上述結論,TimerTask需要執行6秒鐘,但是間隔周期為5秒鐘
    [java] view plaincopy
  • package?test;??
  • import?java.text.ParseException;??
  • import?java.text.SimpleDateFormat;??
  • import?java.util.Date;??
  • import?java.util.Timer;??
  • import?java.util.TimerTask;??
  • public?class?Test?{??
  • ??????
  • ????public?static?void?main(String[]?args)?throws?ParseException?{??
  • ????????SimpleDateFormat?dateFormatter?=?new?SimpleDateFormat("yyyy/MM/dd?HH:mm:ss");??
  • ????????Date?startDate?=?dateFormatter.parse("2010/11/28?01:06:00");??
  • ????????Timer?timer?=?new?Timer();??
  • ????????timer.schedule(new?TimerTask(){??
  • ???????????public?void?run()?{??
  • ???????????????try?{??
  • ???????????????????Thread.sleep(6000);??
  • ???????????????}?catch?(InterruptedException?e)?{??
  • ???????????????????e.printStackTrace();??
  • ???????????????}??
  • ???????????????System.out.println("execute?task!"+?this.scheduledExecutionTime());??
  • ???????????}??
  • ????????},startDate,?5?*?1000);??
  • ????}??
  • ??????
  • }??

  • schedule方法的執行結果如下:
    execute task!1290877560001
    execute task!1290877566001
    execute task!1290877572001
    execute task!1290877578001
    execute task!1290877584001
    execute task!1290877590001
    execute task!1290877596001
    execute task!1290877602001
    execute task!1290877608001
    execute task!1290877614001
    execute task!1290877620001
    execute task!1290877626001
    execute task!1290877632001
    execute task!1290877638001
    可以看出,間隔時間都為6秒,因此, 下一次的執行時間點=上一次程序執行完成的時間點+間隔時間
    當換成scheduleAtFixedRate方法的執行結果如下:
    execute task!1290877860000
    execute task!1290877865000
    execute task!1290877870000
    execute task!1290877875000
    execute task!1290877880000
    execute task!1290877885000
    execute task!1290877890000
    execute task!1290877895000
    execute task!1290877900000
    execute task!1290877905000
    execute task!1290877910000
    execute task!1290877915000
    execute task!1290877920000
    execute task!1290877925000
    execute task!1290877930000
    可以看出,間隔時間都為5秒,因此, 下一次的執行時間點=上一次程序開始執行的時間點+間隔時間;并且因為前一個任務要執行6秒,而當前任務已經開始執行了,因此兩個任務間存在重疊,需要考慮線程同步

    總結

    以上是生活随笔為你收集整理的Timer的schedule和scheduleAtFixedRate方法的区别解析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 色五婷婷 | 人妻洗澡被强公日日澡电影 | 在线观看成人黄色 | 色婷婷成人 | 久久免费偷拍视频 | 好吊色免费视频 | av国产网站 | 欧美夫妇交换xxx | 免费在线激情视频 | 午夜精品一区二区三区在线播放 | 仙踪林久久久久久久999 | 成人午夜视频精品一区 | 国产精品v亚洲精品v日韩精品 | 无码人妻一区二区三区精品视频 | 丰满雪白极品少妇流白浆 | 最好看的中文字幕国语电影mv | 国产精品毛片久久久 | 吻胸摸激情床激烈视频大胸 | 国产孕交| 中文字幕无码不卡免费视频 | 中国一级特黄毛片大片 | 日韩三级国产精品 | 亚洲一区精品在线观看 | 成年女人色毛片 | 日本高清视频www夜色资源 | 国产图片一区 | 挪威xxxx性hd极品 | 亚洲品质自拍视频网站 | 男女啪动最猛动态图 | 午夜精品久久久久久久99热浪潮 | 一区二区国产精品视频 | 天天撸天天射 | 色偷偷噜噜噜亚洲男人的天堂 | 亚洲草逼 | 亚洲AV无码成人国产精品色 | 久久黄色精品视频 | 国产高清一区二区三区四区 | 日本亚洲色大成网站www久久 | 亚洲激情社区 | 国产精品国产三级国产 | 懂色av一区二区三区蜜臀 | 日韩女优一区二区 | 天天夜夜骑 | 三年中文在线观看免费观看 | www在线视频 | 香港台湾日本三级大全 | 亚洲人成网址 | 精品一区二区av | 中文字幕在线不卡视频 | 日韩欧美一二三 | 久久精品视频一区二区 | 亚洲激情在线播放 | 天天爽| 久热最新视频 | bt天堂新版中文在线地址 | 国产一级做a爰片在线看免费 | 少妇被粗大猛进进出出s小说 | 羞羞涩 | 一区二区三区在线观看av | 亚洲小说春色综合另类 | 好吊色视频在线观看 | 久久综合色88| np视频 | 九九热免费在线视频 | 一区二区av | 亚洲欧美伊人 | 亚洲精品合集 | 91福利社在线观看 | 欧美丝袜一区二区三区 | 久久e热| 久久久亚洲天堂 | 少妇高潮一69aⅹ | 少妇精品无码一区二区 | 强行糟蹋人妻hd中文字幕 | 六月色婷婷 | 人人干人人爽 | 少妇av一区二区三区 | 国产中文字幕视频 | 夜操操| 玖玖热视频 | av在线不卡一区 | 小视频在线播放 | 99热99在线| 最近中文字幕在线观看视频 | 日本免费三片在线播放 | 国产伦精品一区二区三区高清版禁 | 天堂中文网在线 | 在线看h网站 | 精品成在人线av无码免费看 | 淫辱的世界(调教sm)by | 国产嫩草在线 | 天天干天天干天天干天天 | 国产资源免费 | 成人福利社 | 狠狠狠狠狠狠干 | 日本少妇b | 原创少妇半推半就88av | 亚洲淫片 | 亚洲伦理在线视频 |