首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用cron4j,我有不同的任务需要不同的时间表。

使用cron4j,我有不同的任务需要不同的时间表。
EN

Stack Overflow用户
提问于 2013-09-15 16:50:01
回答 1查看 1.9K关注 0票数 1

好的,我有两个时间表如下。您可以看到,我有我的executor服务以及一个新的调度器实例。

考虑到我有一个调度程序的实例,我有两个任务,我想在不同的时间运行。这是否意味着在下面的配置中,我只是重新安排了调度程序的现有实例?

我需要有多个调度器实例吗?

实例化执行器服务和调度程序

代码语言:javascript
复制
    //Creates Executor Instance
    final ExecutorService es = Executors.newSingleThreadExecutor();

    // Creates a Scheduler instance.
    Scheduler scheduler = new Scheduler();

为第一次循环任务创建计划

代码语言:javascript
复制
    // Schedule a once-a-week task at midday on Sunday.
    scheduler.schedule("* 12 * * 7", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "ConstituentScraper Schedule");

            es.submit(new ConstituentScraper());
        }
    });

为第二次循环任务创建计划

代码语言:javascript
复制
    // Schedule a once-a-day task.
    scheduler.schedule("* 7 * * 1-5 | * 18 * * 1-5 ", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "SummaryScraper Schedule");

            es.submit(new SummaryScraper());
        }
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-24 06:48:00

上述问题的答案是肯定的。您确实需要为每个计划有单独的调度器实例。

因此,代码应该如下所示。

如果您有两个时间表,则将为每个计划分别设置一个实例。

代码语言:javascript
复制
    // Creates a Constituent Scheduler instance.
    Scheduler constituentScheduler = new Scheduler();

    // Creates a Summary Scheduler instance.
    Scheduler summaryScheduler = new Scheduler();   

而且每个时间表都可以单独设置。

代码语言:javascript
复制
    // Schedule a once-a-week task at 8am on Sunday.        
    constituentScheduler.schedule("0 8 * * 7", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "ConstituentScraper Schedule");

            es.submit(new ConstituentScraper());
        }
    });


    //scheduler.schedule("28 7 * * 1-5 | * 18 * * 1-5 ", new Runnable() {
    summaryScheduler.schedule("0 7 * * 1-5 |0 18 * * 1-5 ", new Runnable() {
        public void run() {
            Log.i(CLASS_NAME, "SummaryScraper Schedule");

            // TODO only put in queue if a working day
            es.submit(new SummaryScraper());
        }
    });

每个时间表一旦设置完毕,也必须启动。

代码语言:javascript
复制
    // Starts the Scheduler
    constituentScheduler.start();

    // Starts the Scheduler
    summaryScheduler.start();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18814915

复制
相关文章

相似问题

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