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()方法。