我正在使用 ExecutorService 运行一些 Callable 线程。线程在提交给 ExecutorService 之前使用数据进行初始化。
在处理 Future.get() 抛出的异常时,我想用原始数据记录一条消息。是否可以从 Future 对象返回到创建它的原始线程?
伪代码:
void run(List<Data> dataList) {
List<Future<Foo>> results = new ArrayList<Future<Foo>>();
for (Data data : dataList) {
Callable<Foo> thread = new FooCallable(data);
Future<Foo> result = this.executorService.submit(thread);
results.add(result);
}
...
for (Future<Foo> result : results) {
Foo foo;
try {
foo = result.get();
} catch (InterruptedException e) {
//
// I would like access to the original Data object here
//
} catch (ExecutionException e) {
//
// and here
//
}
}
}