SpringBoot中如何详细运用DelayQueue实现延时任务执行?
- 内容介绍
- 文章标签
- 相关推荐
本文共计999个文字,预计阅读时间需要4分钟。
DelayQueue简介:DelayQueue是一个无界阻塞队列,只有当延迟时间满时,才能从中提取元素。队列头部是延迟时间最长的元素。在许多场景下,我们需要使用延迟任务,比如给用户发送定时消息。
DelayQueue简介
DelayQueue是一个无界阻塞队列,只有在延迟期满时,才能从中提取元素。
队列的头部,是延迟期满后保存时间最长的delay元素。
在很多场景我们需要用到延时任务,比如给客户异步转账操作超时后发通知告知用户,还有客户下单后多长时间内没支付则取消订单等等,这些都可以使用延时任务来实现。
jdk中DelayQueue可以实现上述需求,顾名思义DelayQueue就是延时队列。
DelayQueue提供了在指定时间才能获取队列元素的功能,队列头元素是最接近过期的元素。
没有过期元素的话,使用poll()方法会返回null值,超时判定是通过getDelay(TimeUnit.NANOSECONDS)方法的返回值小于等于0来判断。
延时队列不能存放空元素。
一般使用take()方法阻塞等待,有过期元素时继续。
本文共计999个文字,预计阅读时间需要4分钟。
DelayQueue简介:DelayQueue是一个无界阻塞队列,只有当延迟时间满时,才能从中提取元素。队列头部是延迟时间最长的元素。在许多场景下,我们需要使用延迟任务,比如给用户发送定时消息。
DelayQueue简介
DelayQueue是一个无界阻塞队列,只有在延迟期满时,才能从中提取元素。
队列的头部,是延迟期满后保存时间最长的delay元素。
在很多场景我们需要用到延时任务,比如给客户异步转账操作超时后发通知告知用户,还有客户下单后多长时间内没支付则取消订单等等,这些都可以使用延时任务来实现。
jdk中DelayQueue可以实现上述需求,顾名思义DelayQueue就是延时队列。
DelayQueue提供了在指定时间才能获取队列元素的功能,队列头元素是最接近过期的元素。
没有过期元素的话,使用poll()方法会返回null值,超时判定是通过getDelay(TimeUnit.NANOSECONDS)方法的返回值小于等于0来判断。
延时队列不能存放空元素。
一般使用take()方法阻塞等待,有过期元素时继续。

