4 5 7 DelayQueue實現快取設計

2021-10-07 19:27:38 字數 1022 閱讀 8197

實體:

public class mydelayed implements delayed 

public string getkey()

public void setkey(string key)

/*** 獲取剩餘的時間

* @param unit

* @return

*/@override

public long getdelay(timeunit unit)

/*** 剩餘時間公升序排列

* @param o

* @return

*/@override

public int compareto(delayed o)

@override

public string tostring() ';

}}

快取物件:還未過期的物件儲存在map中

public class mycache extends thread 

//時刻檢查佇列中元素是不是到期

@override

public void run() }}

}public void add(string key, long expiretime)

public delayed get(string key)

}

測試

public class test extends thread 

system.out.println("key-1 還沒有過期:");

system.out.println("key-2 還沒有過期:");}}

}

結果

開始新增元素

key-1 還沒有過期:

key-2 還沒有過期:

。。。。。。

key-2 還沒有過期:

key-1 過期了

key-2 過期了

DelayQueue實現延遲訊息

最近想做乙個定時推送訊息的功能,經過調研了解到delayqueue,訊息物件需實現delayed介面裡的getdelay timeunit unit 方法,由於delayed繼承了comparable故需要實現compareto方法,可用於決定訊息的推送次序。以考試為例,設定每個考生的交卷時間點。學...

DelayQueue 實現延時佇列

延遲佇列不需要不停的掃瞄快取 任務 輪訓等,它能夠實現在準確的時間點去執行任務。public class delaytask implements delayed public taskbase getdata public long getexpire override public long g...

使用DelayQueue實現訂單限時支付處理

delayqueue是乙個無界阻塞佇列,佇列中的元素必須實現delayed介面,在建立元素時可以指定多久才能從佇列中獲取當前元素。只有在延遲期滿時才能從佇列中提取元素。delayqueue可以用作快取系統的設計,可以用delayqueue儲存快取元素的有效期,使用乙個執行緒迴圈查詢delayqueu...