11

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

4

3 回答 3

20

注意:这适用于 Spring 3.0+

  1. 阅读有关调度任务的 Spring 文档

  2. 使用TaskScheduler服务,例如 aTimerManagerTaskSchedulerThreadPoolTaskScheduler

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

  4. 当您想取消执行时,调用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 回答