关闭固定大小的线程池

时间:2012-07-21 17:23:56

标签: java concurrency

我使用Executors.newFixedThreadPool生成线程池,并希望在作业队列为空且没有线程正在工作时关闭它。我该怎么做?

1 个答案:

答案 0 :(得分:4)

首先需要关闭池,同时让所有已提交的任务完成但不允许新任务完成。然后你可以阻塞,直到队列为空并且所有任务都已完成:

pool.shutdown();
pool.awaitTermination(1, TimeUnit.HOUR);

ExecutorService.shutdown()

  

先前提交的任务已执行,但不会接受任何新任务

ExecutorService.awaitTermination()

  

阻止所有任务在关闭请求后完成执行