文章预览
大家好,我是Tom哥。 延迟任务在我们日常生活中比较常见,比如订单支付超时取消订单功能,又比如自动确定收货的功能等等。 这篇文章从实现到原理来盘点延迟任务的11种实现方式,没有绝对的好坏,只是适用场景不大相同。 DelayQueue DelayQueue是JDK提供的api,是一个延迟队列 DelayQueue泛型参数得实现Delayed接口,Delayed继承了Comparable接口。 getDelay 方法返回这个任务还剩多久时间可以执行,小于0的时候说明可以这个延迟任务到了执行的时间了。 compareTo 这个是对任务排序的,保证最先到延迟时间的任务排到队列的头。 来个demo @Getter public class SanYouTask implements Delayed { private final String taskContent; private final Long triggerTime; public SanYouTask (String taskContent, Long delayTime) { this .taskContent = taskContent;
………………………………