java延时队列使用

2017-02-13 - 518 Words - 7,764 Views - 0 Goods - Nothing

在实际的业务中会遇到如下场景:

1)过30秒给商家发送用户下单成功通知
2)过1分钟失败任务重试
3)过1小时发送邮件
等等,需要延时一段时间处理,在Java的juc包中给我提供了DelayQueue延时队列处理,过一会该处理的事儿。
DelayQueue<E extends Delayed>,一个无界阻塞队列,只有在延迟期满时才能从中提取元素。该队列的头部是延迟期满后保存时间最长的Delayed元素。如果延迟都还没有期满,则队列没有头部,并且 poll 将返回 null。当一个元素的 getDelay(TimeUnit.NANOSECONDS) 方法返回一个小于等于 0 的值时,将发生到期。即使无法使用 take 或 poll 移除未到期的元素,也不会将这些元素作为正常元素对待。例如,size 方法同时返回到期和未到期元素的计数。此队列不允许使用 null 元素。
下面通过代码演示这一场景:

1.新建消息实现Delayed接口

2.创建消费者

3.向延时队列发送消息测试结果如下:

转载请注明原文链接:首页 -> 技术交流 -> JAVA开发 -> java延时队列使用
  • 支付宝打赏
  • 微信打赏

China.BeiJing

如果说人生是自我编写的程序,那么青春就是其中意味深长的代码