DelayQueue是一個無界阻塞佇列,只有在延遲期滿時才能從中擷取元素。此隊列的頭部是延遲期滿後保存時間最長的Delayed 元素。
DelayQueue阻塞佇列在我們系統開發中也常常會用到,例如:快取系統的設計,快取中的對象,超過了空閒時間,需要從快取中移出;任務調度系統,能夠準確的掌握任務的執行時間。我們可能需要透過線程處理很多時間上要求很嚴格的數據,如果使用普通的線程,我們就需要遍歷所有的對象,一個一個的檢查看數據是否過期等,首先這樣在執行上的效率不會太高,其次就是這種設計的風格也大大的影響了資料的精確度。一個需要12:00點執行的任務可能12:01 才執行,這樣對資料要求很高的系統有更大的弊端。由此我們可以使用DelayQueue。
為了具有呼叫行為,存放到DelayDeque的元素必須實作Delayed介面。 Delayed介面使物件成為延遲對象,它使存放在DelayQueue類別中的物件具有了啟動日期。此介面強制執行下列兩個方法。
CompareTo(Delayed o):Delayed接口继承了Comparable接口,因此有了这个方法。 getDelay(TimeUnit unit):这个方法返回到激活日期的剩余时间,时间单位由单位参数指定。
實作Delayed介面
本程式碼:合約簽署後執行時間與目前時間對比,實作到點自動執行合約。
線程啟動,DelayQueue開始工作
#spring boot啟動加載,初始化資料來源放入,並開啟單線程
留個記錄!
相關推薦:
#以上是JAVA中DelayQueue的使用:阻塞佇列、延遲佇列的詳細內容。更多資訊請關注PHP中文網其他相關文章!