2011-07-12 30 views
5

我使用java的Future類來執行任務,但是如果任務完成,方法isDone返回true。完成可能是由於正常終止,例外或取消 - 在所有這些情況下,此方法將返回true。我如何知道如何使用java的Future類來完成任務

有沒有辦法知道它是因爲異常還是因爲它成功完成而結束?

回答

2

您可以簡單地嘗試檢索值 - get方法然後引發異常或返回值。

6

當你調用的Future.get()方法中,有4個可能的結果:

  • 你得到的結果值
  • 你得到CancellationException - 如果計算被取消(如Future.cancel(真)被調用)
  • 你得到爲ExecutionException - 如果計算拋出異常
  • 你得到InterruptedException - 如果在等待(例如executor.shutdownNow()被調用)當前線程被中斷
+0

你說的沒錯,這是一個更爲更好的方法。 +1 –

+0

我們如何確定線程是否正在執行Runnable或Callable?未來會提供這些信息嗎? – Abidi

0

我在我的代碼中使用它,唯一的辦法,你可以計算出,如果真的成功地完成了任務,是通過使用get()

相關問題