博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DelayedQueue
阅读量:4960 次
发布时间:2019-06-12

本文共 614 字,大约阅读时间需要 2 分钟。

DelayedQueue是一个用来延时处理的队列,

* 所谓延时处理就是说可以为队列中元素设定一个过期时间,
* 相关的操作受到这个设定时间的控制。
首先,这种队列中只能存放实现Delayed接口的对象,
而此接口有两个需要实现的方法。最重要的就是getDelay,
这个方法需要返回对象过期前的countdown时间。
简单说,队列在某些方法处理前,会调用此方法来判断对象有没有超时。
DelayedQueue本身有些类似的存取方法,按doc描述区别如下:

​存入队列:add offer put无太大区别

从队列中获取:peek poll take​有较大不同使用场景

peek:获取队列的head对象,但不是从队列中移除。如果队列空,就返回空

poll :​获取并移出队列head对象。如果head没有超时,返回空

poll w/ timeout参数 : ​获取并移出队列head对象。如果没有超时head对象,会wait当前线程知道有超时对象,或者按照超时参数设定,返回空

take : ​获取并移出队列head对象。如果没有超时head对象,会wait当前线程知道有对象满足超时条件

​DelayedQueue实现保证了最快过期的对象排在head位置,也就是说它会在每次peek时候返回最快超时的对象。

使用的代码演示:

转载于:https://www.cnblogs.com/luleiitlife/p/8544991.html

你可能感兴趣的文章
让ul li 或者table 进行循环往上滚屏
查看>>
Docker安装 小记
查看>>
mysql中的高级查询
查看>>
Spacebuilder在Mono上运行修改备忘
查看>>
java @param参数注解
查看>>
面向接口编程详解(三)——模式研究
查看>>
性能调优之SQL优化
查看>>
python几个时间函数
查看>>
Sql Server 2005如何导入DBF文件?
查看>>
数据库的相关概念
查看>>
XtraReport三动态数据绑定
查看>>
获取动态代理对象
查看>>
GDCPC 2017 省赛小结
查看>>
Putty配置
查看>>
How to install maps and addons (.VPK)
查看>>
Cookie和Session详解
查看>>
汇编实验四
查看>>
DB_NAME DB_UNIQUE_NAME 和 SID 的理解
查看>>
基于epoll的tcpip的服务端
查看>>
BBC.万物与虚无.Everything.and.Nothing
查看>>