阻止,直到ExecutorService完成

fre*_*low 1 java concurrency multithreading blocking executorservice

可能重复:
ExecutorService,如何等待所有任务完成
Java ExecutorService:awaitTermination所有递归创建的任务

有没有办法阻止当前线程,直到ExecutorService完成所有任务?

executor.execute(task1);
executor.execute(task2);
executor.execute(task3);
executor.execute(task4);
executor.execute(task5);
// ...now I want to block until all tasks have finished executing...
System.out.println("done!")
Run Code Online (Sandbox Code Playgroud)

Joh*_*int 7

对于您的所有任务,将它们放入List callables然后在它们上调用All

ExecutorService e = ...

e.invokeAll(callables);
Run Code Online (Sandbox Code Playgroud)

每个javadocs

执行给定的任务,返回完成所有状态和结果的Futures列表.对于返回列表的每个元素,Future.isDone()都为true.请注意,已完成的任务可能正常终止或通过抛出异常终止.如果在此操作正在进行时修改了给定集合,则此方法的结果是不确定的.

因此,线程将等待所有任务完成


归档时间:

查看次数:

6007 次

最近记录:

9 年,1 月 前