如何取消Spring计时器执行

时间:2012-12-13 20:52:38

标签: java spring scheduling

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

3 个答案:

答案 0 :(得分:17)

注意:这适用于Spring 3.0 +

  1. 阅读Spring documentation on scheduling tasks

  2. 使用TaskScheduler服务,例如TimerManagerTaskSchedulerThreadPoolTaskScheduler

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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