好的,所以我有两个时间表如下。您可以看到我有我的执行程序服务以及调度程序的新实例。
看到我有一个调度程序的实例,我有两个任务,我想在不同的时间运行。这是否意味着在下面的配置中我只是重新调度现有的调度程序实例?
我是否需要拥有多个调度程序实例?
实例化执行程序服务和调度程序
//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());
}
});
答案 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();