使用cron4j,我有单独的任务需要单独的日程安排。

时间:2013-09-15 16:50:01

标签: java cron4j

好的,所以我有两个时间表如下。您可以看到我有我的执行程序服务以及调度程序的新实例。

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

我是否需要拥有多个调度程序实例?

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

    //Creates Executor Instance
    final ExecutorService es = Executors.newSingleThreadExecutor();

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

为第一次重复任务创建计划

    // 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());
        }
    });

为第二次重复任务创建计划

    // 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());
        }
    });

1 个答案:

答案 0 :(得分:0)

上述答案是肯定的。您确实需要为每个计划分别设置调度程序实例。

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

如果您有两个计划,则将为每个计划单独设置一个实例。

    // Creates a Constituent Scheduler instance.
    Scheduler constituentScheduler = new Scheduler();

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

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

    // 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());
        }
    });

每个计划一旦设置,也必须开始。

    // Starts the Scheduler
    constituentScheduler.start();

    // Starts the Scheduler
    summaryScheduler.start();