Java FutureTask完成检​​查

时间:2012-08-02 11:57:47

标签: java futuretask

我检查了Oracle Java API,它提供了FutureTask.isDone()

的一些信息

但我需要检查任务是否已完成或因任何错误而终止。 isDone()方法即使完成/终止也会返回。但是由于某些问题,我需要知道它是完成还是终止。

3 个答案:

答案 0 :(得分:11)

如果FutureTask完成,之后调用get()(可以没有任何超时,它应该立即返回)。它将返回一些结果或抛出:

  

ExecutionException - 如果计算引发异常

ExecutionException.getCause()将返回从您的任务中抛出的异常。

答案 1 :(得分:0)

为什么不拨打FutureTask.get()

这将返回结果或抛出包含最初抛出/捕获的异常的异常。如果任务没有完成,则dit将阻止,并且您可以选择提供超时。

通常希望客户只需在创建后依次致电get() FutureTask,而不是轮询isDone()

答案 2 :(得分:0)

isDone()返回true时,您希望通过调用get()方法来检查执行结果来获得结果。 get()操作可以抛出ExecutionException,其中包含原因,您可以在哪里找到问题。