1

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

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

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

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

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

1 回答 1

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();
于 2013-09-24T06:48:00.050 回答