如何取消Spring计时器执行

Big*_*der 9 java spring scheduling

我需要取消Spring定时器执行或至少根据某些条件更改执行频率.正在使用org.springframework.scheduling.quartz.SimpleTriggerBeanorg.springframework.scheduling.timer.ScheduledTimerTask.找不到怎么做的方法.

gpe*_*che 17

注意:这适用于Spring 3.0+

  1. 阅读有关计划任务的Spring文档

  2. 使用TaskScheduler服务,例如TimerManagerTaskSchedulerThreadPoolTaskScheduler.

  3. 通过调用某个TaskScheduler.schedule*()方法安排您的任务并存储返回ScheduledFuture.

  4. 如果要取消执行,请调用ScheduledFuture.cancel().这将停止进一步调用您的任务.此时,您可以通过TaskScheduler.schedule*()使用不同参数调用任务来重新安排.


TRU*_*U7H 0

到目前为止,这不是最好的解决方案,但如果您无法想出任何其他解决方案,您始终可以使用每次触发事件时都会检查的布尔值,如果布尔值为 false,则计时器任务的 run 方法应立即终止。