有趣的設計——延時隊列(DelayQueue)實現超時任務處理機制


有趣的設計——延時隊列(DelayQueue)實現超時任務處理機制

作者:星晴(當地小有名氣,小到只有自己知道的傑倫粉)

今天不得不吐槽一下老板了,我了去,又沒發工資,這還讓不讓我活了,身負貸款,真的快要以貸養貸了。有沒有搞錯啊,老天啊;這句話憋了很久了,說出心聲舒服多了,還是老老實實計算一下下個月怎么過吧!今天的互聯網行情真是不好,我們公司也離倒閉不遠了,希望慢慢能度過這段時間,有所好轉,不然就得重新找工作了!!!

吐槽了這么多,還是回歸正題,今天給大家分享一下我們項目中如何通過延時隊列實現超時任務處理機制。

生產代碼就不展示了,就一個Demo來玩吧

DelayQueue

作用:根據執行時間進行排序,然后等待到執行時間,就能獲取到相對的數據

應用場景:超時任務處理

 

1.創建DelayTask 實現Delayed
1596699988849.png

屬性說明:

  • executeTime 延時任務的執行時間

  • taskType 任務類型

  • msg 具體執行的任務數據

方法:

  • getDelay() 返回還剩多少時間執行: 通過任務執行時間減去當前時間

  • compareTo() 返回排序大小: 隊列之間的執行時間排序

 

2.創建延遲隊列處理器

1596701665397.png

說明:

  • while循環獲取隊列

  • delayQueue.take(),有數據就返回,沒數據就等待

 

3.創建Test類

test.png

輸出結果:

1596702046505.png

如果還有什么不懂,歡迎在下面留言!!!

關注公眾號,有更多好玩的等着你!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM