如何取消Spring计时器执行
我需要取消Spring定时器执行或至少根据某些条件更改执行频率。 同时使用org.springframework.scheduling.quartz.SimpleTriggerBean
和org.springframework.scheduling.timer.ScheduledTimerTask
。 找不到怎么做的方法。
注意 :这适用于Spring 3.0+
-
阅读有关计划任务的Spring文档
-
使用
TaskScheduler
服务,例如TimerManagerTaskScheduler
或ThreadPoolTaskScheduler
。 -
通过调用一些
TaskScheduler.schedule*()
方法安排您的任务并存储返回的ScheduledFuture
。 -
如果要取消执行,请调用
ScheduledFuture.cancel()
。 这将停止进一步调用您的任务。 此时,您可以通过调用TaskScheduler.schedule*()
为您的任务使用不同的参数重新安排。
到目前为止,这不是最好的解决方案,但是如果你不能提出其他任何东西,你总是可以使用每次触发事件时都会检查的布尔值,如果布尔值为false,则timertask的run方法应该立即终止。
解决方案是为org.springframework.scheduling.timer.TimerFactoryBean分配一个id,然后从应用程序中检索此bean,将其强制转换为Timer并在该对象上调用cancel方法。