Spring定时器有两种停止的方式:
@Scheduled(fixedRate = 1000)
public void someTask(ScheduledFuture<?> scheduledFuture) {
// 业务逻辑
if (需要停止定时器的条件) {
scheduledFuture.cancel();
}
}
@Autowired
private TaskScheduler taskScheduler;
public void startTask() {
ScheduledFuture<?> scheduledFuture = taskScheduler.schedule(new Runnable() {
@Override
public void run() {
// 业务逻辑
}
}, new CronTrigger("*/5 * * * * *")); // 定时表达式
// 业务逻辑
if (需要停止定时器的条件) {
scheduledFuture.cancel();
}
}
需要注意的是,停止定时器时需要保留定时任务的ScheduledFuture对象,以便在需要停止定时器的地方调用cancel()方法。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:Debian 定时器如何停止