我使用 Spring Framework 的 @Scheduled
注释创建了一个简单的计划任务。
@Scheduled(fixedRate = 2000)
public void doSomething() {}
现在我想在不再需要时停止这项任务。
我知道可能有一种替代方法可以在此方法开始时检查一个条件标志,但这不会停止执行此方法。
Spring 提供什么来停止 @Scheduled
任务?
原文由 Sachin Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议
选项 1:使用后处理器
提供
ScheduledAnnotationBeanPostProcessor
并显式调用postProcessBeforeDestruction(Object bean, String beanName)
,为其调度应停止的 bean。选项 2:维护目标 bean 到其 Future 的映射
当必须停止对 bean 的调度时,您可以查找映射以获取对应的
Future
并明确取消它。