【问题标题】:Java - Catching an error from either of 2 Callables as soon as it occursJava - 一旦发生错误就从 2 个 Callables 中捕获一个错误
【发布时间】:2014-03-17 04:04:44
【问题描述】:

我有两个 Callable 任务同时运行,从一个主线程启动。这两个 Callable 中的任何一个都可能引发错误,我需要将此错误传递回主线程并在那里处理。此外,只要在任一 Callable 中发生错误,我就想在 main 中捕获它。但是,我看不出如何做到这一点。如果我只是等待 Callables 的两个 Futures

try {
    future1.get();
    future2.get();
} catch (ExecutionException e) {
    // Handle the error...
}

然后我无法捕获第二个可调用对象中发生的错误。我必须等到第一个 callable 完成,要么正常,要么它本身引发错误。

我看不出还有什么办法可以做到这一点。有什么解决办法吗?

【问题讨论】:

    标签: java multithreading concurrency future callable


    【解决方案1】:

    使用ExecutorCompletionService。它将排队最近完成的可调用对象,在这种情况下,它将是第一个抛出错误的对象。

    【讨论】:

      猜你喜欢
      • 2017-05-07
      • 1970-01-01
      • 1970-01-01
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-08
      • 2015-12-08
      相关资源
      最近更新 更多