竹笋

首页 » 问答 » 灌水 » SpringBoot执行延时任务Del
TUhjnbcbe - 2022/10/28 12:03:00
微信营销求职招聘微信群 http://zgpos.com.cn/fengshang/sscl/20201222/698.html

DelayQueue简介

在很多场景我们需要用到延时任务,比如给客户异步转账操作超时后发通知告知用户,还有客户下单后多长时间内没支付则取消订单等等,这些都可以使用延时任务来实现。

jdk中DelayQueue可以实现上述需求,顾名思义DelayQueue就是延时队列。

DelayQueue提供了在指定时间才能获取队列元素的功能,队列头元素是最接近过期的元素。没有过期元素的话,使用poll()方法会返回null值,超时判定是通过getDelay(TimeUnit.NANOSECONDS)方法的返回值小于等于0来判断。延时队列不能存放空元素。一般使用take()方法阻塞等待,有过期元素时继续。

队列元素说明

DelayQueueEextendsDelayed的队列元素需要实现Delayed接口,该接口类定义如下:

所以DelayQueue的元素需要实现getDelay方法和Comparable接口的

1
查看完整版本: SpringBoot执行延时任务Del