好的,我有两个时间表如下。您可以看到,我有我的executor服务以及一个新的调度器实例。
考虑到我有一个调度程序的实例,我有两个任务,我想在不同的时间运行。这是否意味着在下面的配置中,我只是重新安排了调度程序的现有实例?
我需要有多个调度器实例吗?
实例化执行器服务和调度程序
//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());
}
});发布于 2013-09-24 06:48:00
上述问题的答案是肯定的。您确实需要为每个计划有单独的调度器实例。
因此,代码应该如下所示。
如果您有两个时间表,则将为每个计划分别设置一个实例。
// 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();https://stackoverflow.com/questions/18814915
复制相似问题