我已經檢查了甲骨文的Java API,它提供了一些信息是FutureTask.isDone()的Java FutureTask完成檢查
,但我需要檢查任務是否已經完成或與任何錯誤而終止。即使完成/終止,isDone()方法也會返回。但是由於某些問題,我需要知道它是完成還是終止。
我已經檢查了甲骨文的Java API,它提供了一些信息是FutureTask.isDone()的Java FutureTask完成檢查
,但我需要檢查任務是否已經完成或與任何錯誤而終止。即使完成/終止,isDone()方法也會返回。但是由於某些問題,我需要知道它是完成還是終止。
如果FutureTask
做,後來叫get()
(可無任何超時,就應該立即返回)。它要麼返回一些結果或拋出:
ExecutionException
- 如果計算拋出異常
ExecutionException.getCause()
將返回從任務引發的異常。
爲什麼不叫FutureTask.get()?
這將返回結果或拋出包含最初拋出的異常/捕獲的異常。如果任務沒有完成,dit將會阻止,並且您可以選擇提供超時。
我會通常希望客戶簡單地調用每個FutureTask
get()
反過來一旦創建,而不是輪詢isDone()
。
當isDone()
回報真的,你想通過調用get()
方法來檢查執行的結果得到的結果。 get()
操作可以拋出ExecutionException
,其中包含原因,您可以在其中找到問題。
即使'isDone()'仍然是false,你可以調用'get()';在這種情況下'get()'等待完成。 – Pino 2016-10-20 14:19:02
你可以叫'得到()',即使'FutureTask'尚未完成;在這種情況下'get()'等待完成。 – Pino 2016-10-20 14:18:22