我最近看到一些代码在调用invokeAll之后调用executorservice awaitTermination。据我所知,invokeAll是一个阻塞调用,等待提交完成的所有任务。因此,在invokeAll完成后,我们可以假设所有任务都已完成或超时。然后我的问题是添加awaitTermination是什么是一个很好的理由,之后还说它等待任务完成或超时?
以下是代码段
List<Future<String>> futures = executorService.invokeAll(collection, 100, TimeUnit.SECONDS);
executorService.shutdown();
executorService.awaitTermination(100L, TimeUnit.SECONDS);