如何取消Spring定时器执行

11

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

3个回答

22

我的bean在Spring XML文件中配置。我如何从那里获取TaskScheduler的实例?你的意思是说我需要在我的Java代码中进行所有配置吗? - BigWonder
只需使用<bean>元素实例化TaskScheduler,并将其注入到需要使用它的位置。 - gpeche
注意,cancel() 方法的布尔参数是 mayInterruptIfRunning - Klesun

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

<task:scheduler id="myScheduler" /> 然后你可以获取 myScheduler 并调用 cancel() - Andre

0
这绝对不是最好的解决方案,但如果你想不出其他办法,你可以始终使用一个布尔值,每次事件触发时都会检查该布尔值,如果布尔值为假,则应立即终止timertask的run方法。

这就是我实际所做的。这种方法绝对不可取,因为如果满足某些条件,我不想再次执行任务。 - BigWonder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接