【发布时间】:2013-12-28 08:05:52
【问题描述】:
我需要定期执行一些数据收集,为此我想创建一个从不同服务器请求一些数据的任务。一些服务器将比其他服务器花费更多时间来处理请求并返回响应。
这就是为什么我想为每个服务器创建一个任务并异步执行任务。如果我以下列方式使用ScheduledExecutorService,每个任务将在其自己的线程中执行,还是所有任务将在同一个线程中执行?
如果一个任务抛出异常,所有其他计划任务都会失败,会发生什么情况?
this.scheduler = Executors.newSingleThreadScheduledExecutor(new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
return new Thread(r, "collectionThread");
}
});
for (String url:urls){
this.scheduler.scheduleWithFixedDelay(new CollectorTask(url),
startupDelaySeconds,
scheduleRateSeconds,
TimeUnit.SECONDS);
}
【问题讨论】:
标签: java multithreading scheduler