使用java';时,如何知道任务是如何完成的;未来的阶级

使用java';时,如何知道任务是如何完成的;未来的阶级,java,runnable,future,Java,Runnable,Future,我使用java的Future类来执行任务,但是如果任务完成,方法isDone将返回true。完成可能是由于正常终止、异常或取消——在所有这些情况下,此方法将返回true 有没有办法知道它是因为异常还是因为成功完成而结束的?您可以简单地尝试检索值-然后get方法抛出异常或返回值。调用Future.get()方法时,有4种可能的结果: 得到结果值 您将获得CancellationException-如果计算被取消(例如,调用Future.cancel(true)) 得到ExecutionExcep

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


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

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

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

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

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

如何确定线程是否正在执行可运行或可调用的任务?未来会提供这些信息吗?