Java延迟处理(Java版本)
发布时间
阅读量:
阅读量
业务场景:
1、若订单生成后30分钟内未完成支付操作,系统将自动进行取消处理,具体该如何达成这一功能呢?
2、在订单生成后的60秒时长内,需向用户发送短信通知
延时任务和定时任务的区别:
- 定时任务具备清晰的启动时刻,而延时任务则不具备这一特性;
- 定时任务通常具有周期性执行的特征,相比之下,延时任务则是在特定事件发生之后经过一定时间间隔才执行,且不具有周期性;
- 定时任务通常用于处理批量操作,涉及多个任务的执行,而延时任务一般仅针对单一任务进行处理。
实现方案:
1、JDK延迟队列机制解析
通过使用JDK提供的DelayQueue进行实现,该队列属于无界阻塞类型,仅当元素的延迟时间到达后,方可从中取出。所有存入DelayQueue的对象均需实现Delayed接口。

Poll():用于从队列中取出并删除已超时的元素,若不存在此类元素,则返回空值。
take():用于从队列中取出并删除已超时的元素,若当前无符合条件的元素,则使调用线程进入等待状态,直至出现满足超时条件的元素
全部评论 (0)
还没有任何评论哟~
