首頁  >  文章  >  Java  >  JAVA中DelayQueue的使用:阻塞佇列、延遲佇列

JAVA中DelayQueue的使用:阻塞佇列、延遲佇列

php是最好的语言
php是最好的语言原創
2018-08-08 11:50:392832瀏覽

DelayQueue是一個無界阻塞佇列,只有在延遲期滿時才能從中擷取元素。此隊列的頭部是延遲期滿後保存時間最長的Delayed 元素。

DelayQueue阻塞佇列在我們系統開發中也常常會用到,例如:快取系統的設計,快取中的對象,超過了空閒時間,需要從快取中移出;任務調度系統,能夠準確的掌握任務的執行時間。我們可能需要透過線程處理很多時間上要求很嚴格的數據,如果使用普通的線程,我們就需要遍歷所有的對象,一個一個的檢查看數據是否過期等,首先這樣在執行上的效率不會太高,其次就是這種設計的風格也大大的影響了資料的精確度。一個需要12:00點執行的任務可能12:01 才執行,這樣對資料要求很高的系統有更大的弊端。由此我們可以使用DelayQueue。

  為了具有呼叫行為,存放到DelayDeque的元素必須實作Delayed介面。 Delayed介面使物件成為延遲對象,它使存放在DelayQueue類別中的物件具有了啟動日期。此介面強制執行下列兩個方法。

CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。
getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,时间单位由单位参数指定。

實作Delayed介面
本程式碼:合約簽署後執行時間與目前時間對比,實作到點自動執行合約。
JAVA中DelayQueue的使用:阻塞佇列、延遲佇列

線程啟動,DelayQueue開始工作
JAVA中DelayQueue的使用:阻塞佇列、延遲佇列

#spring boot啟動加載,初始化資料來源放入,並開啟單線程
JAVA中DelayQueue的使用:阻塞佇列、延遲佇列

留個記錄!

相關推薦:

深入理解Java執行緒程式設計中的阻塞佇列容器

並發包阻塞佇列之ArrayBlockingQueue

#

以上是JAVA中DelayQueue的使用:阻塞佇列、延遲佇列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn