国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

java中DelayQueue實例用法詳解

瀏覽:2日期:2022-08-18 15:25:44

在阻塞隊里中,除了對元素進行增加和刪除外,我們可以把元素的刪除做一個延遲的處理,即使用DelayQueue的方法。這里的刪除需要一定的時間才能生效,有點類似于過期處理的理念。下面我們就DelayQueue的概念、特點進行講解,然后在代碼示例中體會DelayQueue的使用。

1.概念

是一個帶有延遲時間的無界阻塞隊列。隊列中的元素,只有等延時時間到了,才能取出來。此隊列一般用于過期數據的刪除,或任務調度。以下,模擬一下定長時間的數據刪除。

2.特點

(1)無邊界設計

(2)添加(put)不阻塞,移除阻塞

(3)元素都有一個過期時間

(4)取元素只有過期的才會被取出

3.實例

每個需要放入DelayQueue隊列元素需要實現Delayed接口,下面我們創建DelayObject 類,其實例對象將被放入DelayQueue中。其構造函數包括字符串類型數據及延遲毫秒變量。

public class DelayObject implements Delayed { private String data; private long startTime; public DelayObject(String data, long delayInMilliseconds) { this.data = data; this.startTime = System.currentTimeMillis() + delayInMilliseconds;}

DelayQueue的應用實例

package org.dromara.hmily.demo.springcloud.account.service; import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;import java.util.concurrent.DelayQueue;import java.util.concurrent.Delayed;import java.util.concurrent.TimeUnit; /** * @description: 延時隊列測試 * @author: hh */public class DelayedQueneTest { public static void main(String[] args) throws InterruptedException { Item item1 = new Item('item1', 5, TimeUnit.SECONDS); Item item2 = new Item('item2',10, TimeUnit.SECONDS); Item item3 = new Item('item3',15, TimeUnit.SECONDS); DelayQueue<Item> queue = new DelayQueue<>(); queue.put(item1); queue.put(item2); queue.put(item3); System.out.println('begin time:' + LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)); for (int i = 0; i < 3; i++) { Item take = queue.take(); System.out.format('name:{%s}, time:{%s}n',take.name, LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME)); } } } class Item implements Delayed{ /* 觸發時間*/ private long time; String name; public Item(String name, long time, TimeUnit unit) { this.name = name; this.time = System.currentTimeMillis() + (time > 0? unit.toMillis(time): 0); } @Override public long getDelay(TimeUnit unit) { return time - System.currentTimeMillis(); } @Override public int compareTo(Delayed o) { Item item = (Item) o; long diff = this.time - item.time; if (diff <= 0) {// 改成>=會造成問題 return -1; }else { return 1; } } @Override public String toString() { return 'Item{' +'time=' + time +', name=’' + name + ’’’ +’}’; }}

運行結果:每5秒取出一個

begin time:2019-05-31T11:58:24.445name:{item1}, time:{2019-05-31T11:58:29.262}name:{item2}, time:{2019-05-31T11:58:34.262}name:{item3}, time:{2019-05-31T11:58:39.262}

到此這篇關于java中DelayQueue實例用法詳解的文章就介紹到這了,更多相關java中DelayQueue是什么內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 在线观看日本亚洲一区 | 奇米第四狠狠777高清秒播 | 国产激情视频在线 | 国产高清视频免费 | 国产成人精品久久一区二区小说 | 在线a毛片免费视频观看 | 美国一级毛片片aa免 | 日韩免费精品一级毛片 | 美女一级毛片毛片在线播放 | 国产一区二区三区不卡免费观看 | 最新毛片久热97免费精品视频 | 亚洲精品一区二区三区在线看 | 亚洲夜夜爽 | 综合久久99久久99播放 | 美女黄网站视频 | 久久综合99re久久爱 | 国产三级在线视频播放线 | 国产午夜精品不卡视频 | 国产日韩欧美swag在线观看 | 午夜人成 | 狠狠干香蕉 | 欧美va免费大片 | аⅴ资源天堂8在线 | 日韩三级在线免费观看 | 成人在线免费观看网站 | 国产亚洲欧美日韩国产片 | 毛片在线免费视频 | 精品国产免费观看一区 | 18在线观看国内精品视频 | 日韩毛片免费视频一级特黄 | 国产成综合 | 永久黄网站色视频免费网站 | 精品乱人伦一区二区 | 欧美一区二区精品系列在线观看 | 国内精品久久久久久久久 | 香港三级日本三级三级人妇 | 久草免费在线播放 | 成年人视频网站免费 | 欧美特欧美特级一片 | 中文字幕精品视频 | 欧美成人免费午夜全 |