欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么

定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括龍州網(wǎng)站建設(shè)、龍州網(wǎng)站制作、龍州網(wǎng)頁制作以及龍州網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,龍州網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到龍州省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

今天學(xué)習(xí)是并發(fā)包提供的延遲隊(duì)列(DelayQueue)。

延遲隊(duì)列說明

延遲隊(duì)列提供的功能是在指定時(shí)間點(diǎn)才能獲取隊(duì)列元素的功能,隊(duì)列最前面的元素是最優(yōu)先執(zhí)行的元素。 

列舉一下使用場(chǎng)景可能能夠更加好理解,比如緩存系統(tǒng)的設(shè)計(jì),緩存中的對(duì)象,指定了過期時(shí)間,到了過期時(shí)間就需要從緩存中移出;在比如任務(wù)調(diào)度系統(tǒng),要準(zhǔn)確在任務(wù)規(guī)定的時(shí)間點(diǎn)執(zhí)行任務(wù)。這些場(chǎng)景如果我們不使用延遲隊(duì)列,就必須不同的遍歷所有緩存、任務(wù)然后判斷是否需要移除緩存、執(zhí)行任務(wù)。

而延遲隊(duì)列則不需要不停的掃描緩存、任務(wù),它能夠?qū)崿F(xiàn)能夠實(shí)現(xiàn)在準(zhǔn)確的時(shí)間點(diǎn)去執(zhí)行任務(wù)。 

接下來我們梳理一下緩存準(zhǔn)時(shí)移除的實(shí)現(xiàn),首先我們知道每個(gè)緩存的過期時(shí)間,就可以計(jì)算出每個(gè)緩存過期的時(shí)間戳,我們首先根據(jù)過期時(shí)間戳作為比較放到優(yōu)先級(jí)隊(duì)列(上一篇文章介紹的優(yōu)先級(jí)隊(duì)列)中,然后從優(yōu)先級(jí)隊(duì)列獲取緩存,肯定是獲取到最先需要過期的緩存,判斷緩存是否到了過期時(shí)間,如果沒到則把線程阻塞(過期時(shí)間戳與當(dāng)前時(shí)間戳的差值),一定時(shí)間后線程自動(dòng)喚醒,再次驗(yàn)證發(fā)現(xiàn)緩存剛好到期,可以移除緩存。 

同樣定時(shí)任務(wù)的準(zhǔn)時(shí)執(zhí)行也一樣,只不過是把緩存過期的時(shí)間戳換成定時(shí)任務(wù)下次執(zhí)行時(shí)間戳作為比較依據(jù)。 

通過分析發(fā)現(xiàn)要實(shí)現(xiàn)這個(gè)功能需要一個(gè)優(yōu)先級(jí)隊(duì)列,保存的元素要指定移除隊(duì)列的時(shí)間戳。

DelayQueue屬性介紹

從上一步分析得出延遲隊(duì)列必須擁有優(yōu)先級(jí)隊(duì)列的功能,同時(shí)保存的元素要有確定移除隊(duì)列的時(shí)間,那么我們來看DelayQueue具體實(shí)現(xiàn),基本屬性源碼如下圖:

 定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么

可以看到它利用優(yōu)先級(jí)隊(duì)列q用來保存數(shù)據(jù),那么就擁有了優(yōu)先級(jí)隊(duì)列的全部功能。

接著看它所能存儲(chǔ)的元素都必須繼承Delayed,查看Delayed源碼發(fā)現(xiàn)它繼承了Comparable接口,并且聲明了方法“l(fā)ong getDelay(TimeUnit unit);”,這個(gè)方法的說明翻譯過來是:以給定的時(shí)間單位返回與此對(duì)象關(guān)聯(lián)的剩余延遲。它可以直接得出對(duì)象剩余延遲,就像緩存的剩余時(shí)間,就可以執(zhí)行獲取到對(duì)象的線程阻塞時(shí)間。

那么繼承至Delayed的對(duì)象就同時(shí)擁有了優(yōu)先級(jí)隊(duì)列需要的Comparable的實(shí)現(xiàn)和對(duì)象剩余延遲執(zhí)行的時(shí)間。

DelayQueue關(guān)鍵實(shí)現(xiàn)

直接看take方法的實(shí)現(xiàn),源碼如下圖:

 定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么

只要上一篇文章弄懂了優(yōu)先級(jí)隊(duì)列,在看延遲隊(duì)列的代碼就很簡(jiǎn)單了。首先利用的是優(yōu)先級(jí)隊(duì)列獲取元素,然后調(diào)用getDelay(Delayed接口聲明的)方法判斷是否阻塞以及阻塞時(shí)間。

可以看到第一個(gè)線程進(jìn)來了如果發(fā)現(xiàn)節(jié)點(diǎn)為null則是不限阻塞時(shí)間的阻塞,而后面進(jìn)來的線程如果發(fā)現(xiàn)leader不為null也是直接阻塞,后面的線程可以通過leader線程執(zhí)行完后喚醒,那么leader線程是什么時(shí)候喚醒呢? 

leader無限阻塞的原因是隊(duì)列中沒有數(shù)據(jù),所以要喚醒肯定就是添加數(shù)據(jù)的地方,在offer方法保存元素成功后會(huì)驗(yàn)證隊(duì)列最前面的是不是剛剛保存的元素,如果是則會(huì)調(diào)用available.signal();喚醒線程,代碼比較簡(jiǎn)單就不貼出來了。

延遲隊(duì)列最佳實(shí)踐

延遲隊(duì)列要說最佳實(shí)踐就要說到前面提交的定時(shí)任務(wù)了,在之前分析定時(shí)任務(wù)線程池ScheduledThreadPoolExecutor提到過,所以我們直接來看ScheduledThreadPoolExecutor中的實(shí)現(xiàn),關(guān)鍵源碼如下圖:

 定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么

每個(gè)任務(wù)在放到任務(wù)隊(duì)列前都會(huì)設(shè)置下次執(zhí)行時(shí)間time,如上圖通過time實(shí)現(xiàn)了getDelay和compareTo方法,這樣一個(gè)線程池就可以保存多個(gè)定時(shí)任務(wù),每個(gè)任務(wù)在執(zhí)行完后會(huì)重置time然后繼續(xù)放到線程池的優(yōu)先級(jí)隊(duì)列中,就是如此的簡(jiǎn)單的實(shí)現(xiàn)了定時(shí)任務(wù)。

關(guān)于定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

文章標(biāo)題:定時(shí)任務(wù)實(shí)現(xiàn)的關(guān)鍵DelayQueue延遲隊(duì)列是什么
轉(zhuǎn)載源于:http://aaarwkj.com/article4/godcoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站、Google云服務(wù)器、品牌網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
色91精品在线观看剧情| 国产欧美日韩另类在线播放 | 日本在线一区二区三区| 麻豆精品国产免费av影片| 日本高清不卡在线播放| 日韩精品欧美精品一区二区| 亚洲精品女同专区视频| 九九久久亚洲av成人乱片| 日本乱码一区二区三区在线观看| 国产精品自产拍av在线| 免费午夜福利一区二区| 日本乱一区二区三区在线| av剧情在线观看免费| 91在线视频欧美国产| 国产女主播在线观看视频| 91日本精品一区二区| 国产中文字幕自拍视频| 国产97精品在线播放| 国产剧情av在线资源| 一卡二卡三卡四卡日韩| 久久亚洲精品国产精品黑人| 国产日产亚洲欧美综合另类| 国产麻豆91在线视频| 欧美日本精品在线观看| 日韩精品中文字幕国产精品| 一区二区日韩欧美国产| 国产男生午夜福利网站| 一二三四在线观看日本资讯| 亚洲伦理第一页中文字幕| 精品在线免费视频观看| 91麻豆精品国产91久5久久 | 精品久久亚洲一区二区欧美| 台湾三级一区二区三区| 可以免费在线看的av网站| 求个手机免费在线观看av网址| 日韩精品有码在线视频免费观看| 欧美亚洲综合激情在线| 亚洲成人大片免费在线观看| 女优一区二区三区蜜桃| 国产精品久久久在线视频| 成人深夜福利视频观看|