【问题标题】:how can i know how a task finished when using java's Future class使用 java 的 Future 类时,我怎么知道任务是如何完成的
【发布时间】:2011-10-03 19:45:01
【问题描述】:

我正在使用 java 的 Future 类来执行任务,但是如果任务完成,方法 isDone 返回 true。完成可能是由于正常终止、异常或取消——在所有这些情况下,此方法都将返回 true。

有没有办法知道它是因为异常还是因为成功完成而结束?

【问题讨论】:

    标签: java runnable future


    【解决方案1】:

    您可以简单地尝试检索该值 - get 方法然后要么抛出异常,要么返回该值。

    【讨论】:

      【解决方案2】:

      当你调用 Future.get() 方法时,有 4 种可能的结果:

      • 你得到结果值
      • 你会得到 CancellationException - 如果计算被取消(例如 Future.cancel(true) 被调用)
      • 你会得到 ExecutionException - 如果计算抛出异常
      • 您会得到 InterruptedException - 如果当前线程在等待时被中断(例如调用 executor.shutdownNow())

      【讨论】:

      • 我们如何判断一个 Runnable 或 Callable 是否正在被线程执行? Future 会提供这些信息吗?
      【解决方案3】:

      我已经在我的代码中使用了它,你可以确定任务是否真的成功完成的唯一方法是使用 get()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-31
        • 2019-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-23
        • 1970-01-01
        相关资源
        最近更新 更多