黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java編程入門,定時(shí)任務(wù)timer循環(huán)

Java編程入門,定時(shí)任務(wù)timer循環(huán)

更新時(shí)間:2020-05-18 15:23:42 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3769次

什么是Timer

Timer是java.util工具包中提供的定時(shí)任務(wù)類。簡(jiǎn)潔易上手的使用方式,能幫我們快速構(gòu)建一個(gè)定時(shí)任務(wù)。

如何使用Timer

使用Timer配置與執(zhí)行定時(shí)任務(wù),由兩個(gè)部分組成

1.調(diào)度者Timer類

2.任務(wù)內(nèi)容類TimerTask類(該類實(shí)現(xiàn)了Runnable接口,TimerTask是一個(gè)虛類)

使用步驟

1.創(chuàng)建一個(gè)Timer對(duì)象

2.創(chuàng)建一個(gè)Task類,需要繼承TimerTask類,并且實(shí)現(xiàn)Runnable的run方法,用于定義具體的定時(shí)任務(wù)執(zhí)行內(nèi)容

3.調(diào)用Timer對(duì)象的schedule方法,并且將步驟的Task對(duì)象傳入,同時(shí)傳入需要延遲執(zhí)行的時(shí)間,和定時(shí)任務(wù)執(zhí)行的間隔時(shí)間。

從源碼分析Java定時(shí)任務(wù)工具類Timer

Java編程入門,定時(shí)任務(wù)timer循環(huán)

實(shí)現(xiàn)原理

Timer類原理

Timer類是一個(gè)調(diào)度者的角色。它包含了兩個(gè)最重要的部分:1.任務(wù)隊(duì)列TaskQueue2.調(diào)度線程TimerThread。

調(diào)度線程TimerThread

當(dāng)初始化一個(gè)Timer對(duì)象的時(shí)候,就會(huì)執(zhí)行TimerThread線程對(duì)象。該線程會(huì)進(jìn)入一個(gè)自旋,不斷查詢?nèi)蝿?wù)隊(duì)列TaskQueue,如果隊(duì)列為空,在線程等待。否則會(huì)獲取執(zhí)行時(shí)間,并且與當(dāng)前時(shí)間比較,如果未到執(zhí)行時(shí)間則等待差值。并且如果是重復(fù)執(zhí)行的任務(wù),會(huì)再次丟入任務(wù)隊(duì)列TaskQueue。

Java編程入門,定時(shí)任務(wù)timer循環(huán)

任務(wù)隊(duì)列TaskQueue

TaskQueue是一個(gè)小頂堆的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)TimerTask。因此可以保證每次從隊(duì)列中獲取的任務(wù)都是最近要執(zhí)行的任務(wù)。

當(dāng)Timer對(duì)象調(diào)用schedule方法時(shí),會(huì)將TimerTask丟入任務(wù)隊(duì)列,并且喚醒調(diào)度者線程

Java編程入門,定時(shí)任務(wù)timer循環(huán)  

Timer類的缺點(diǎn)

1.imer是單線程的,如果一次執(zhí)行多個(gè)定時(shí)任務(wù),會(huì)導(dǎo)致某些任務(wù)被其他任務(wù)所阻塞。比如A任務(wù)每秒執(zhí)行一次,B任務(wù)10秒執(zhí)行一次,但是一次執(zhí)行5秒,就會(huì)導(dǎo)致A任務(wù)在長(zhǎng)達(dá)5秒都不會(huì)得到執(zhí)行機(jī)會(huì)。

2.Timer的執(zhí)行周期時(shí)間依賴于系統(tǒng)時(shí)間,timer中,獲取到堆頂任務(wù)執(zhí)行時(shí)間后,如果執(zhí)行時(shí)間還沒到,會(huì)計(jì)算出需要休眠的時(shí)間=(執(zhí)行時(shí)間-系統(tǒng)時(shí)間),如果系統(tǒng)時(shí)間被調(diào)整,就會(huì)導(dǎo)致休眠時(shí)間無限拉長(zhǎng),后面就算改回來了任務(wù)也因?yàn)樵谛菝咧卸貌坏綀?zhí)行的機(jī)會(huì)。

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java編程入門,定時(shí)任務(wù)timer循環(huán)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产免费无遮挡在线观看视频 | 免费一看一级毛片人 | 久久国产精品亚洲va麻豆 | 天天综合射 | 国产精品日韩欧美一区二区三区 | 最新国产午夜精品视频不卡 | 日韩在线一区视频 | 欧美在线播放 | 日韩精品中文字幕一区二区三区 | 亚洲国产亚洲综合在线尤物 | 日韩在线视频一区 | 欧美日韩一区二区三区视频播 | 久久高清精品 | 日韩影视在线观看 | 久久人人爽人人爽人 | 日本高清一区二区三区水蜜桃 | 人人澡 人人澡 人人看欧美 | 成年在线视频 | 2021天堂在线亚洲精品专区 | 免费人成在线观看网站 | 亚洲精品一二三四 | 国产精品自拍一区 | 日本xxxxx黄区免费看动漫 | 亚洲人成在线观看 | 99九九视频 | 干天天 | 日韩一区二区三区四区五区 | 日本高清中文字幕一区二区三区a | 最新丁香六月 | 日日噜噜噜夜夜爽爽狠狠 | 黄色一级一级 | 国产福利在线小视频 | 久久中文字幕一区二区三区 | 五月婷在线观看 | 欧美大片xxxxbbbb | 动漫涩涩视频 | 一本大道香蕉高清视频视频 | 欧美肥老妇 | 国产xxxx做受性欧美88 | www视频免费观看 | 爆操波多野结衣 |