首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止使用spring任务调度的作业

如何停止使用spring任务调度的作业
EN

Stack Overflow用户
提问于 2012-10-02 22:18:28
回答 2查看 11.8K关注 0票数 6

我已经用applicationContext实现了一个示例spring调度任务,如下所示:

代码语言:javascript
复制
<task:scheduled-tasks scheduler="myScheduler">
    <task:scheduled ref="cron" method="show" cron="0/10 * * * * ?"/>
    <task:scheduled ref="cron" method="show2" cron="0/15 * * * * ?"/>
</task:scheduled-tasks>

<task:scheduler id="myScheduler" pool-size="10"/>

如何停止此调度方法?

EN

回答 2

Stack Overflow用户

发布于 2012-10-02 22:30:49

ThreadPoolTaskScheduler注入到另一个bean中,并调用shutdown()。如果这是不可接受的,您可以将cron bean配置为接受一个标志。例如:

代码语言:javascript
复制
public class Job() {
    private final AtomicBoolean stop = new AtomicBoolean(false);

    public void show() {
        if (stop.get()) {
            return;
        }
        ...
    }

    public void stop() {
        stop.set(true);
    }
}

请注意,这不会从调度程序中删除作业。防止这种情况发生的唯一方法是获取对ScheduledFuture的引用并调用cancel()

票数 3
EN

Stack Overflow用户

发布于 2012-10-02 22:38:32

这取决于你所说的“停止”是什么意思。

  1. Business条件停止:停止作为业务条件的结果,您应该在您的方法中计算这些条件,而不是简单地不执行代码。这样你就可以在运行时停止不想要的执行,运行你的逻辑来处理失败的条件(日志记录,通知等)。JVM业务条件:将chron表达式外部化到属性文件中,或者我更喜欢在
  2. Non中使用系统变量。然后,您只需将属性值更改为9999场景,即可停止任何执行。

系统变量示例。

代码语言:javascript
复制
<task:scheduled-tasks scheduler="myScheduler">
<task:scheduled ref="cron" method="show" cron="#{systemProperties['chron1']}"/>
<task:scheduled ref="cron" method="show2" cron="#{systemProperties['chron2']}"/>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12692083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档