1. CompletableFuture 链式调用概述
在现代Java开发中,异步编程已经成为提升系统性能的重要手段。CompletableFuture作为Java 8引入的强大工具,为我们提供了优雅的异步编程解决方案。它不仅仅是一个Future的增强版,更是一个完整的异步编程框架,能够处理复杂的异步任务编排。
CompletableFuture的核心价值在于:
- 支持函数式编程风格
- 提供丰富的任务组合方法
- 支持异常处理机制
- 允许自定义线程池
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. CompletableFuture 基础用法
2.1 创建CompletableFuture
创建CompletableFuture有三种主要方式:
- 使用构造方法:
java复制CompletableFuture<String> future = new CompletableFuture<>();
future.complete("手动完成的结果");
- 使用静态工厂方法:
java复制// 有返回值的异步任务
CompletableFuture<String> supplyFuture = CompletableFuture.supplyAsync(() -> {
// 模拟耗时操作
try { Thread.sleep(1000); } catch (InterruptedException e) {}
return "SupplyAsync结果";
});
// 无返回值的异步任务
CompletableFuture<Void> runFuture = CompletableFuture.runAsync(() -> {
System.out.println("RunAsync任务执行");
});
- 使用completedFuture创建已完成的任务:
java复制CompletableFuture<String> completedFuture = CompletableFuture.completedFuture("预置结果");
2.2 基本链式调用
最简单的链式调用是thenApply:
java复制CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> "Hello")
.thenApply(s -> s + " World")
.thenApply(String::toUpperCase);
System.out.println(future.get()); // 输出: HELLO WORLD
3. 高级链式调用技巧
3.1 结果消费与处理
当不需要返回新值时,可以使用thenAccept和thenRun:
