Java Executor Service 等待所有任务完成

标签 java executorservice

我正在使用执行程序服务运行 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 CompleteableFuturejoin 方法来等待:

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/

相关文章:

java - Android检查文件大小是否超过某个值

java - 如何立即关闭executorservice中的所有线程?

java - 没有异常输出

java - ScheduledExecutor服务复用

java执行器服务

java - 根据哪个按钮打开 Activity 更改操作?

java - JSF 2.0 如何将 Apache Myfaces 与 Glassfish V3 一起使用

java - Drools - 检查 map 是否存在连续日期

javascript - 我无法从数组中获取环境名称

java - 如何在java中并行运行2个任务?