1

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

4

1 回答 1

4

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

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

ExecutorService.shutdown()

执行之前提交的任务,但不会接受新的任务

ExecutorService.awaitTermination()

在关闭请求后阻塞,直到所有任务都完成执行

于 2012-07-21T17:31:32.250 回答