我正在研究一個多線程應用程序 Java 5。當它執行時,它會啓動多個執行器服務,並且必須運行很長時間。我有一個監視器服務,用於檢查每個創建的執行程序的狀態。我已閱讀,執行人服務可能僅具有以下狀態:監控並重新啓動Executor服務和將來的任務?
- 運行,
- 關停和
- 終止。
萬一有什麼奇怪的執行過程中發生的, 我有子類我自己 FutureTask類和重寫方法:
- setException和,
- 完成(任何異常像ExecutionException和 InterruptedException這裏謹慎)
我有一個Executor服務拋出ExecutionException(在我自己的FutureTask類中)的情況。 ExecutionException被捕獲並記錄,但我的執行者服務不再記錄任何東西。我的監視器服務正在輸出執行程序服務仍然存在。 也許這與我的FutureTask達到完成狀態有關?
- 什麼是最好的管理方式?
- 是否可以重新啓動執行程序服務?
- 它看起來像FutureTask狀態影響Executor服務,我可以使用FutureTask的狀態來知道Executor服務的狀態。
感謝您的幫助,
感謝您的迴應和建議彼得。對於Java 5,我的意思是我使用新的執行器架構。我的Java版本是6.0。你完全正確地保持jvm最新的工作。我也解決了我的問題,它似乎工作:我在監視器中添加了一行以檢查futuretask的完成狀態,如果它是真的,那麼我將重新提交futuretask給執行程序。 – Alain
@Alain,確保它不會首先死亡是相當簡單的。 ;) –