有趣的設計——延時隊列(DelayQueue)實現超時任務處理機制
做者:星晴(當地小有名氣,小到只有本身知道的杰倫粉)微信
今天不得不吐槽一下老闆了,我了個去,又沒發工資,這還讓不讓我活了,身負貸款,真的快要以貸養貸了。有沒有搞錯啊,老天啊;這句話憋了好久了,說出心聲舒服多了,仍是老老實實計算一下下個月怎麼過吧!今天的互聯網行情真是很差,咱們公司也離倒閉不遠了,但願慢慢能度過這段時間,有所好轉,否則就得從新找工做了!!!ide
吐槽了這麼多,仍是迴歸正題,今天給你們分享一下咱們項目中如何經過延時隊列實現超時任務處理機制。spa
生產代碼就不展現了,就一個Demo來玩吧.net
DelayQueue
做用:根據執行時間進行排序,而後等待到執行時間,就能獲取到相對的數據設計
應用場景:超時任務處理3d
1.建立DelayTask 實現Delayed
屬性說明:code
executeTime 延時任務的執行時間orm
taskType 任務類型blog
msg 具體執行的任務數據排序
方法:
getDelay() 返回還剩多少時間執行: 經過任務執行時間減去當前時間
compareTo() 返回排序大小:隊列之間的執行時間排序
2.建立延遲隊列處理器
說明:
while循環獲取隊列
delayQueue.take(),有數據就返回,沒數據就等待
3.建立Test類
輸出結果:
若是還有什麼不懂,歡迎在下面留言!!!
關注公衆號,有更多好玩的等着你!!!
本文分享自微信公衆號 - 喜歡奶茶的星晴(code-1984)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。