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 中异步线程执行结果的合并。希望这篇文章对你有所帮助,如果有任何问题,欢迎随时向我提问。继续加油,努力学习!