如何取消Spring计时器执行

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

注意 :这适用于Spring 3.0+

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

  2. 使用TaskScheduler服务,例如TimerManagerTaskSchedulerThreadPoolTaskScheduler

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

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

到目前为止,这不是最好的解决方案,但是如果你不能提出其他任何东西,你总是可以使用每次触发事件时都会检查的布尔值,如果布尔值为false,则timertask的run方法应该立即终止。

解决方案是为org.springframework.scheduling.timer.TimerFactoryBean分配一个id,然后从应用程序中检索此bean,将其强制转换为Timer并在该对象上调用cancel方法。