Java 异步线程执行结果合并
1. 介绍
在 Java 开发中,我们经常会遇到需要同时执行多个异步任务,并在所有任务完成后将结果合并的情况。本文将向刚入行的小白介绍如何实现 Java 中异步线程执行结果的合并。
2. 流程
以下是整个过程的步骤,我们将使用表格展示:
步骤 | 操作 |
---|---|
1 | 创建多个异步任务 |
2 | 执行异步任务 |
3 | 等待所有任务完成 |
4 | 合并结果 |
journey
title 异步线程执行结果合并流程
section 创建异步任务
section 执行异步任务
section 等待任务完成
section 合并结果
3. 代码实现
步骤一:创建多个异步任务
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
public class AsyncTasks {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
List<Callable<Integer>> tasks = new ArrayList<>();
// 创建多个异步任务
for (int i = 0; i < 5; i++) {
final int taskId = i;
Callable<Integer> task = () -> {
return taskId * 2;
};
tasks.add(task);
}
}
}
步骤二:执行异步任务
// 执行异步任务
List<Future<Integer>> futures = executor.invokeAll(tasks);
步骤三:等待所有任务完成
// 等待所有任务完成
for (Future<Integer> future : futures) {
Integer result = future.get();
System.out.println("Task result: " + result);
}
步骤四:合并结果
// 合并结果
int totalResult = futures.stream().mapToInt(f -> {
try {
return f.get();
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}).sum();
System.out.println("Total result: " + totalResult);
4. 总结
通过以上步骤,我们可以实现 Java 中异步线程执行结果的合并。希望这篇文章对你有所帮助,如果有任何问题,欢迎随时向我提问。继续加油,努力学习!