DelayQueue 實現延時佇列

2021-10-22 16:07:41 字數 941 閱讀 1703

延遲佇列不需要不停的掃瞄快取、任務、輪訓等,它能夠實現在準確的時間點去執行任務

public class delaytask implements delayed 

public taskbase getdata()

public long getexpire()

@override

public long getdelay(timeunit unit)

@override

public int compareto(delayed o)

@override

public string tostring() ';

}

@component

public class delayqueuemanager implements commandlinerunner

/*** 刪除延時任務

* @param taskid

* @return

*/public boolean remove(string taskid)

/*** 專案啟動後開啟乙個執行緒 用來執行延時任務

* @param args

* @throws exception

*/@override

public void run(string... args) throws exception

/*** 延時任務執行執行緒

*/private void excutethread() catch (interruptedexception e) }}

/*** 執行延時任務

* @param task

*/private void processtask(delaytask task)

}

DelayQueue延時佇列的使用

在談到delayqueue的使用和原理的時候,我們首先介紹一下delayqueue,delayqueue是乙個無界阻塞佇列,只有在延遲期滿時才能從中提取元素。該佇列的頭部是延遲期滿後儲存時間最長的delayed 元素。delayqueue阻塞佇列在我們系統開發中也常常會用到,例如 快取系統的設計,快...

延時任務 DelayQueue詳解

3.總結 delayqueue中的元素要實現delayed介面,delayed介面又實現了 comparable介面 public inte ce delayed extends comparable public inte ce comparable class work implements d...

DelayQueue延時佇列示例

delayqueue是乙個無界阻塞佇列,只有在延遲期滿時才能從中提取元素。該佇列的頭部是延遲期滿後儲存時間最長的delayed 元素。快取系統的設計,快取中的物件,超過了空閒時間,需要從快取中移出 任務排程系統,能夠準確的把握任務的執行時間。我們可能需要通過執行緒處理很多時間上要求很嚴格的資料,如果...