




资源介绍
视频数量:47个
总时长:1小时48分
课程介绍:
Java异步编程:让应用吞吐量飙升的秘密
你有没有遇到过这种情况:打开一个旅游App,查询从北京到上海的航班,结果等了足足十几秒才看到结果。你以为系统在偷懒?其实它可能正忙得不可开交——一个航空公司一个航空公司地串行查询,每个查询都要等网络往返,少说也得几百毫秒。三个航空公司就是将近两秒,八个呢?如果服务器再稍微有点卡顿,三秒四秒都有可能。
但问题是,这真的是系统能力的极限吗?当然不是。换一种思路,如果同时向所有航空公司发请求,哪个先回来就先显示哪个,结果可能只需要几百毫秒。异步编程就是这样一种技术,它能让你在不增加硬件的情况下,把应用的吞吐量提升几倍甚至几十倍。
这门课会手把手教你掌握Java平台上的异步编程。课程选用了CompletableFuture这个API来讲解,因为它是JDK自带的,不需要依赖任何第三方库,学完就能直接用到项目里。讲师Jose有丰富的实战经验,不是照本宣科地讲概念,而是通过大量演示代码,带着你一步一步写出真正能用的异步代码。
先说说第一部分要学什么。很多人以为异步就是"后台运行",其实这个理解比较浅。这部分会帮你把基础概念理清楚:吞吐量说的是单位时间内能处理多少请求,延迟说的是每个请求要等多久。同步代码为什么会造成阻塞?异步代码怎么在"未来"某个时刻给你结果?线程和并发是什么关系?这些看似基础的问题,搞清楚了对后面的学习至关重要。
理解了基本概念之后,课程会通过九个演示来带你上手。从最简单的情况开始——怎么异步打印一个列表,怎么用异步比较器来排序。然后逐步过渡到实际场景:多个服务器怎么并发查询,线程数量怎么选才能既快又稳。最后还会讲到CompletableFuture这种更现代的方式怎么用。每一个演示都是实际能跑起来的代码,看完你就知道怎么动手了。
第二部分会讲一个很实用的问题:怎么把多个任务串联起来,形成一条处理流水线。比如一个任务查到了航班信息,下一个任务要去查询那个航班的实时价格,再下一个要把结果展示给用户。如果用老办法,可能会写成查询完航班再查价格,查完价格再展示,一环套一环,这样延迟会累加。课程会教你用非阻塞的方式把这些任务链起来,让它们可以并行处理各自的工作,大幅缩短总耗时。
这部分还会讲到Stream API和异步编程结合时容易踩的坑。很多人在用Stream的时候不知不觉就回到了同步的老路上,课程会演示这个问题长什么样,然后告诉你怎么修正。
第三部分会讲到更复杂的场景:业务流程拆分成多个异步任务。比如你要查询天气和报价,这两个任务是独立的,可以同时进行。问题来了:多个报价返回时间不一样怎么办?怎么从多个结果里选出最优的那个?怎么把两个任务的结果组合成一个完整的响应?课程会用多个具体的演示来讲解anyOf、组合和组合的区别,什么时候该用哪种方式,这些都是有据可循的。
第四部分开始深入线程控制。程序跑起来了,但你想过没有,到底是哪个线程在执行你的代码?不同类型的任务应该用不同的线程池来处理:访问数据库用一个池,访问文件系统用另一个池,网络请求又用一个池。课程会演示默认行为是什么样的,什么时候可以直接用默认配置,什么时候必须自己设置线程池。这部分还会讲到信号量怎么限制并发数量,防止系统被过多的并发请求压垮。
最后一部分专门讲异常处理。异步代码出错了怎么捕获?CompletableFuture提供了exceptionally、handle、whenComplete这些方法,它们有什么区别,各自适合什么场景?课程会用具体的例子演示。比如查询天气超时会怎样,部分报价获取失败怎么处理,怎么设计一个容错的系统,即使某些数据获取失败,最终仍然能返回一个可用的结果。这部分最后的演示会把前面学到的所有东西串起来,构建一个完整的响应式系统。
学完这门课,你就能独立编写高性能的异步代码了。不再只会用同步的方式等待网络请求,而是能真正控制程序的吞吐量,写出既快又稳的响应式应用。课程里用到的技术都是Java标准库的API,学完可以直接上手工作。