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

use*_*907 5 java future runnable

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

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

Eug*_*hov 6

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

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


Paŭ*_*ann 2

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