Мне интересно, ждет ли основной поток завершения всех задач в параметре invokeAll (), прежде чем продолжить. Вот мой код, и кажется, что это так.
public static void main(String[] args) throws InterruptedException {
ExecutorService service = null;
try
{
service = Executors.newCachedThreadPool();
List<Callable<?>> list = new ArrayList<>();
for(int i = 0; i < 1000; i++)
{
list.add(() -> {System.out.println("Not yet"); return null;});
}
service.invokeAll(list);
System.out.println("END!"); // Output "END" at last no matter what
}
finally
{
if(service != null)
{
service.shutdown();
}
}
}
Как видите, независимо от того, сколько задач я создал, будь то 1000 или 10000, программа все равно выдаст «END» в конце.
Может кто-нибудь подтвердить эту информацию? Большое вам спасибо!