我需要取消 Spring 计时器的执行,或者至少根据某些条件更改执行频率。正在使用org.springframework.scheduling.quartz.SimpleTriggerBean
和org.springframework.scheduling.timer.ScheduledTimerTask
。找不到如何做的方法。
问问题
9516 次
3 回答
20
注意:这适用于 Spring 3.0+
使用
TaskScheduler
服务,例如 aTimerManagerTaskScheduler
或ThreadPoolTaskScheduler
。通过调用一些
TaskScheduler.schedule*()
方法来安排你的任务并存储返回的ScheduledFuture
.当您想取消执行时,调用
ScheduledFuture.cancel()
. 这将停止进一步调用您的任务。此时,您可以根据需要通过TaskScheduler.schedule*()
使用不同参数调用您的任务来重新安排时间。
于 2012-12-13T22:07:36.230 回答
0
到目前为止,这不是最好的解决方案,但是如果您想不出其他任何方法,则可以始终使用布尔值,每次触发事件时都会检查该布尔值,如果布尔值为 false,则 timertask 的 run 方法应立即终止.
于 2012-12-13T21:44:32.933 回答
0
解决方案是为 org.springframework.scheduling.timer.TimerFactoryBean 分配一个 id,然后从应用程序中检索此 bean,将其转换为 Timer 并在该对象上调用取消方法。
于 2012-12-20T14:19:46.110 回答