我需要每次执行4个任务,就像这样:
ExecutorService taskExecutor = Executors.newFixedThreadPool(4);
while(...) {
taskExecutor.execute(new MyTask());
}
//...wait for completion somehow
我该如何在所有任务完成后得到通知?目前,我想不出比设置一些全局任务计数器更好的方法,并在每个任务结束时将其减少,然后监视这个计数器是否变为0;或者获取Future列表并在无限循环中监视它们全部都已完成。有没有更好的解决方案,不涉及无限循环?
谢谢。
Long.MAX_VALUE, TimeUnit.NANOSECONDS
等同于没有超时。 - Sam Harwelljava.util.concurrent
包下的文档,在“Timing”部分查看:要等待“永远”,您可以使用Long.MAX_VALUE
的值。 - beluchin