我正在使用java中的Executors來同時併發運行更多的線程。 我有一套Runnable對象,我把它分配給Exceutors.The Executor工作正常 和一切都很好。但所有的任務在池中執行後,Java程序沒有終止,我認爲執行程序需要一些時間來殺死線程。任何人都可以幫助我減少執行器執行所有任務後所花費的時間。如何停止執行Java中的Executor ThreadPool?
21
A
回答
22
該ExecutorService類有2種方法只是爲此:shutdown()和shutdownNow()。
使用shutdown()方法後,您可以調用awaitTermination()以阻止所有已啓動的任務完成。您甚至可以提供超時以防止永久等待。
您可能需要點擊我提供的部分鏈接。他們直接去找你可以自己閱讀這些東西的文檔。
9
executor.shutdown()with awaitTermination(timeout)不會終止線程。 (即),如果您的可運行任務位於輪詢循環內部,它不會終止任務。它所做的只是在超時達到時中斷它的可運行任務。所以,在你運行的類的代碼,如果你等待的一些條件,你可能要更改的條件爲,
while (flagcondition && !Thread.currentThread().isInterrupted()) {}
這可確保當作爲while循環結束線程被中斷的任務停止。或者,您可能希望捕獲中斷的異常,並在catch塊中設置flag = false來終止線程。
try {
// do some stuff and perform a wait that might throw an InterruptedException
} catch (InterruptedException e) {
flagcondition = false;
}
您可能還想使用探查器來檢查爲什麼有些線程還沒有完成。
相關問題
- 1. 如何中止或停止JavaScript執行?
- 2. Java執行隨機停止
- 3. 停止代碼執行Java
- 4. Java停止代碼執行?
- 5. 停止ThreadPoolTaskExecutor異常
- 6. 如何停止執行eventlisteners
- 7. 如何停止Maven執行
- 8. 如何在Java中的線程中停止執行該方法?
- 9. 如何在JBoss EAP 5.1中使用create threadpool/executor服務
- 10. 如何停止在java swing中執行的動作
- 11. 如何停止或暫停php執行?
- 12. 如何在java中停止命令執行
- 13. 如何停止php函數的執行?
- 14. 如何停止執行j2me的midlet?
- 15. 如何停止執行的Jar文件
- 16. 如何停止從命令行執行Java程序?
- 17. 如何在執行運行時命令後停止java掛起
- 18. mysqli_multi_query何時停止執行?
- 19. Javascript執行何時停止?
- 20. JAVA:如何在特定時間後停止函數的執行?
- 21. Java執行者:如何停止提交的任務?
- 22. 如何停止從Eclipse執行的Java應用程序
- 23. Java Applet開始執行後停止
- 24. CTS執行停止中途
- 25. 在JavaScript中停止執行
- 26. 停止javascript執行
- 27. 停止SAS執行
- 28. 停止執行JavaScript
- 29. 停止QThread執行
- 30. 停止執行javascript?
我如何確保所有任務都已提交,我需要所有任務都應該執行 – Rajapandian
@Rajapandian關閉的定義是它等待所有任務完成,但不允許新任務開始。這不是你想要的嗎? –
請任何人告訴我爲什麼我的java程序需要時間來停止執行,即使執行器完成所有任務後。 – Rajapandian