在使用java的Future类时,我怎么知道任务是如何完成的

时间:2011-07-12 16:54:33

标签: java runnable future

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

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

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

您只需尝试检索值 - get方法然后抛出异常,或返回值。

答案 2 :(得分:0)

我在我的代码中使用过它,你可以通过使用get()来判断任务是否真正成功完成的唯一方法