我正在使用执行程序服务运行 10 个任务,一次运行 2 个任务。
ExecutorService executor = Executors.newFixedThreadPool(2);
for (int i = 0; i < 10; i++) {
String name = "NamePrinter " + i;
Runnable runner = new TaskPrint(name, 1000);
System.out.println("Adding: " + name + " / " + 1000);
executor.execute(runner);
}
如何等待所有任务完成
最佳答案
使用 java 8 CompleteableFuture
和 join
方法来等待:
ExecutorService executor = Executors.newFixedThreadPool(2);
CompletableFuture[] futures = new CompletableFuture[10];
for (int i = 0; i < 10; i++) {
String name = "NamePrinter " + i;
Runnable runner = new TaskPrint(name, 1000);
System.out.println("Adding: " + name + " / " + 1000);
futures[i] = CompletableFuture.runAsync(runner, executor);
}
CompletableFuture.allOf(futures).join(); // THis will wait until all future ready.
关于Java Executor Service 等待所有任务完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50220329/