CompletableFuture是Java 8引入的可手动完成、支持回调与链式编排的增强型Future,具备非阻塞回调、任务编排、主动生命周期控制、明确线程策略及自然异常传播等核心特性。
CompletableFuture 是 Java 8 引入的异步编程核心工具,本质是一个可手动完成、支持回调和链式编排的 Future。它弥补了传统 Future 的短板:不用阻塞等待、能组合依赖任务、自带异常处理、支持函数式风格。
它不是简单的“异步容器”,而是面向任务流程设计的增强型 Future:
根据是否需要

CompletableFuture.runAsync(() -> System.out.println("日志已写入"));CompletableFuture future = CompletableFuture.supplyAsync(() -> fetchUserName(userId)); 两个方法都有带 Executor 的重载版本,用于替换默认线程池,避免耗尽 commonPool() 影响其他并行流操作。
所有以 then 开头的方法都属于“结果就绪后触发”,但行为不同:
真实业务很少只跑一个异步任务,CompletableFuture 提供了清晰的组合语义:
thenCompose(),B 是返回 CompletableFuture 的函数,避免嵌套thenCombine(),传入另一个 CompletableFuture 和合并函数CompletableFuture.allOf(cf1, cf2, cf3),返回 void 类型 CompletableFuture;再用 join() + get() 分别取结果CompletableFuture.anyOf(cf1, cf2, cf3),返回 Object 类型 CompletableFuture,需自行转型基本上就这些。掌握 runAsync/supplyAsync 创建、thenXXX 处理、组合与异常这三类用法,就能覆盖绝大多数异步需求。