CompletableFuture 是Java提供的异步编程工具,用于处理异步任务和任务编排
它是 Future 的增强版本
传统 Future 的问题:不能主动完成,不能组合任务,不能回调;CompletableFuture解决了这些问题
代码示例
1 | CompletableFuture.supplyAsync(() -> queryUser()) |
例如上面的例子,执行流程是查询用户-》获取订单-》处理结果;全部是异步链式编程
底层原理
它在底层通过 CAS 状态控制和 Completion 回调链实现任务完成后的回调触发,并默认使用 ForkJoinPool 线程池执行异步任务。CompletableFuture支持链式调用、任务组合(如 thenApply、allOf、anyOf),可以方便实现串行或并行任务编排。在实际业务中常用于并行RPC调用、聚合接口、异步任务处理等场景,从而提升系统吞吐和降低接口响应时间