如何等待所有线程完成,使用ExecutorService?

问题:

我需要一次执行一些任务4,像这样:

ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
    taskExecutor.execute(new MyTask());
}
//...wait for completion somehow

一旦所有这些都完成,我该如何收到通知?现在我不能比任何一个全局任务计数器更好地考虑任何事情,并在每个任务结束时减少它,然后在无限循环中监视这个计数器变为0;或获得期货列表,并在无限循环监视器中为所有这些显示器。什么是更好的解决方案不涉及无限循环?
谢谢。

回答:

基本上,ExecutorService您呼叫shutdown()然后awaitTermination()

ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
  taskExecutor.execute(new MyTask());
}
taskExecutor.shutdown();
try {
  taskExecutor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
} catch (InterruptedException e) {
  ...
}

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to wait for all threads to finish, using ExecutorService?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 14 = 19