1
我使用Executors.newFixedThreadPool
來生成一個線程池,並且想在作業隊列爲空且沒有線程正在工作時關閉它。我應該怎麼做?關閉一個固定大小的線程池
我使用Executors.newFixedThreadPool
來生成一個線程池,並且想在作業隊列爲空且沒有線程正在工作時關閉它。我應該怎麼做?關閉一個固定大小的線程池
您首先需要關閉您的池,同時讓所有已提交的任務完成但不允許新的任務完成。然後你就可以阻止,直到隊列爲空,所有的任務都完成了:
pool.shutdown();
pool.awaitTermination(1, TimeUnit.HOUR);
以前提交的任務執行,但沒有新的任務將被接受
ExecutorService.awaitTermination()
:
阻塞,直到所有任務都有在關機請求後完成執行