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