我有两个可调用的任务同时运行,从主线程启动。这两个可调用对象中的任何一个都可能引发错误,我需要将此错误传递回主线程并在那里处理。此外,一旦错误发生在任一 Callable 中,我想在 main 中捕获它。但是,我看不出如何做到这一点。如果我只是等待两个期货的可赎回对象
try {
future1.get();
future2.get();
} catch (ExecutionException e) {
// Handle the error...
}
然后我无法捕获错误,因为它发生在第二个可调用对象中。我必须等到第一个可调用对象完成,要么正常,要么它本身会抛出错误。
我看不出我还能如何实现这一目标。对此有什么解决方案吗?
使用 ExecutorCompletionService。 它将对最近完成的可调用对象进行排队,在这种情况下,这将是第一个抛出错误的可调用对象。