定义一个定时任务类,并继承ThreadPoolTaskScheduler ,目的是调用其中的相关方法。
@Component
public class ScheduledTask extends ThreadPoolTaskScheduler {
private static Logger logger = LoggerFactory.getLogger(ScheduledTask.class);
public void excuteForOnce(Runnable task, Date startTime) {
this.schedule(task, startTime);
}
}
这样,每次生成一个订单时,调用excuteForOnce方法顺便启动一个定时任务去实现订单失效,代码如下:
scheduledTask.schedule(() -> { doSth(); }, new Date(System.currentTimeMillis() + orderExpireSecond));