- 基本步骤:
- 创建
CompletableFuture
实例来表示任务 task1
和 task2
。这可以通过 CompletableFuture.supplyAsync
方法,将实际的任务逻辑作为参数传递进去,这些任务会异步执行。
- 使用
thenCombine
方法将两个 CompletableFuture
实例组合起来。thenCombine
方法接收另一个 CompletableFuture
和一个 BiFunction
,BiFunction
用于处理两个任务的结果,在这里就是将两个字符串结果拼接起来。
- 可以通过调用
join
方法获取最终的拼接结果。在实际应用中,也可以使用 thenApply
等方法进行进一步的处理而不是直接获取结果。
- 示例代码:
import java.util.concurrent.CompletableFuture;
public class CompletableFutureAndExample {
public static void main(String[] args) {
CompletableFuture<String> task1 = CompletableFuture.supplyAsync(() -> {
// 模拟任务1的执行
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of task1";
});
CompletableFuture<String> task2 = CompletableFuture.supplyAsync(() -> {
// 模拟任务2的执行
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Result of task2";
});
CompletableFuture<String> combinedFuture = task1.thenCombine(task2, (result1, result2) -> result1 + " " + result2);
String finalResult = combinedFuture.join();
System.out.println(finalResult);
}
}