當發生異常時,我在我的ExecutorService上調用shutdownNow()。我認爲isTerminated()會給我成功的狀態,當所有線程結束時都是true,否則爲false。但無論如何,我總是會變得真實。任何建議?有沒有辦法知道ExecutorService是否成功結束?
2
A
回答
1
shutdownNow()
將停止正在等待任務。如果你想在目前等待的線程來執行,然後嘗試使用它shutdown()
的javadoc: http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html#shutdown()
1
我懷疑isTerminated()始終返回true,因爲你在呼喚shutdownNow()
而不是shutdown()
和,按照API文檔shutdownNow()
:
...典型的實現將通過主題取消。中斷()
因此,它聽起來像你的任務都立即響應中斷嘗試,導致他們立即完成。
0
由於文檔說,「isTerminated
是不正確的,除非關閉或shutdownNow時最初被稱爲」。所以它只會告訴我們任務是否結束,而不是它們是否成功。您可以擁有一個標誌,如AtomicBoolean
,並在成功完成之前切換其狀態。通過這種方式,您可以使用ExecutorService
的方法來檢查任務是否完成,並檢查標誌是否成功完成。
相關問題
- 1. 有沒有辦法知道timerTask是否已完成?
- 2. 有沒有辦法知道電子郵件是否用C#成功轉發?
- 3. 有沒有辦法知道文件名是否是Excel格式?
- 4. iPhone - 有沒有辦法知道引用是否(仍然)有效?
- 5. 有沒有辦法知道手機是否有通話?
- 6. 有沒有辦法知道一行是否更新?
- 7. 有沒有辦法知道用戶是否發送了短信?
- 8. 有沒有辦法知道Flash Player是否安裝了SWFObject?
- 9. 有沒有辦法知道Data Saver是否啓用?
- 10. 有沒有辦法知道rxjs websocket是否打開
- 11. 有沒有辦法知道異常是否被禁用?
- 12. 有沒有辦法知道用戶是否打開郵件?
- 13. 有沒有辦法知道HttpResponse是否在Https中?
- 14. 有沒有辦法知道是否已經創建了IWin32Window?
- 15. 有沒有辦法知道$ http請求是否超時?
- 16. 有沒有辦法檢查下一個令牌是否結束?
- 17. 如何知道cmake項目代是否成功結束
- 18. 有沒有辦法讓webpack知道全局是否沒有聲明?
- 19. 有沒有辦法檢測Facebook Javascript SDK是否成功加載?
- 20. 有沒有辦法檢查打印過程是否成功?
- 21. 有沒有辦法知道nodeunit已經完成所有測試?
- 22. iOS:有沒有辦法知道用戶是否選擇了退出通知?
- 23. 有沒有辦法知道SD卡上的目錄是否有任何圖像?
- 24. 有沒有辦法知道一個對象的C#方法是否被調用?
- 25. 有什麼辦法可以知道報告是否有訂閱
- 26. 有沒有辦法知道激活的QAction是什麼?
- 27. 有沒有辦法讓linqpad知道一個字段是主鍵?
- 28. 有沒有辦法知道導航器是全屏(F11)
- 29. 有沒有辦法知道誰是「setNeedsDisplay」的發件人?
- 30. 有沒有辦法知道返回的對象是什麼?