这门课解决什么问题

大部分开发者在写多线程时,第一步是`Future.get()`,结果主线程被卡死;第二步是写回调,结果回调套回调,逻辑一多就变成“菱形地狱”。这门课的主题很聚焦:用`CompletableFuture`把异步任务编排成清晰的流水线,解决等待、串行依赖、并行汇聚、异常传递这些真实场景里的痛点。它不是讲API怎么查字典,而是从`Future`和`Callback`的对比出发,讲清楚异步模型为什么演进,再落到`FutureTask`的底层机制,最后才展开`CompletableFuture`。看完你会明白:所谓异步编排,本质是“把任务之间的依赖关系显式表达出来”,而不是靠阻塞或嵌套回调去隐式推动。

你需要什么基础,先看哪几块

适合已经会写Java线程、用过`ExecutorService`或`Future`,但还没系统处理过“多个任务互相依赖”的人。如果你对`Callable`、`Runnable`、线程池的基本概念都不熟,建议先补一下再来看,否则容易在底层实现上卡住。

课程内容不长,建议按顺序看:先看课程介绍,了解这个系列在架构师能力模型中的位置;然后重点看“Future vs Callback”,这部分是认知转变的关键,要理解`Future`为什么只能阻塞获取结果,而`Callback`为什么会导致嵌套;接着看`FutureTask`,它展示了`Future`的可取消、可异步执行是怎么设计出来的,能帮你理解`CompletableFuture`对它的扩展;最后反复看`CompletableFuture`的主讲部分,这是核心,建议放慢速度,重点观察它是如何把“任务A完成后自动触发任务B”“多个任务全部完成后统一处理”这两类编排用几个方法组合出来的。

学完独立做什么,资料怎么配合练

学完这门课,你应该能独立完成以下事情:把一段串行的“查用户→查订单→查商品→组装结果”改造成`CompletableFuture`的链式调用,并且不阻塞主线程;能实现“并行查询库存、扣减余额、发送消息,全部成功后返回结果”的聚合逻辑;能处理最后一个任务的异常,比如超时、某个子任务失败时整体给出兜底值;还能判断什么场景该用`thenApply`、`thenCompose`、`allOf`,而不是盲目套用。

资料里的代码示例是最有价值的练习素材。建议不要直接运行就完事,而是先看一遍,然后把窗口关掉,自己用IDE重写一个简化版本,比如把示例中的模拟延迟改成真实线程池,把回调改成链式写法。写完后故意制造一个异常(比如让某个任务抛空指针),观察异常如何沿链路传播。之后拿自己项目里一个真实的“多步骤异步”业务,尝试用`CompletableFuture`重构。改完后对比原来的代码,你能直观感到嵌套层数和等待时间的变化,这才算真正掌握。不要背代码,要理解每一步返回的是“新的CompletableFuture”还是“原对象”,这决定了你是否能写出正确的编排。

课程目录

1 课程内容介绍 (33)
2 Future vs Callback (05:50)
3 异步FutureTask (04:52)
4 异步编排CompletableFuture (13:51)