我需要每次执行4个任务,就像这样:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
//...wait for completion somehow
我该如何在所有任务完成后得到通知?目前,我想不出比设置一些全局任务计数器更好的方法,并在每个任务结束时将其减少,然后监视这个计数器是否变为0;或者获取Future列表并在无限循环中监视它们全部都已完成。有没有更好的解决方案,不涉及无限循环?
谢谢。
completed
计数器。因此,在启动它们全部后,在每个通知时,可以确定是否所有任务都已完成。请注意,使用try/finally
非常重要,以便即使任务失败,也会给出完成通知(或在catch
块中的替代通知)。否则,将永远等待。 - ToolmakerSteve