深钻模块:8 个硬核主题
虚拟线程:把阻塞变成廉价
虚拟线程把「线程」从操作系统资源变成 JVM 管理的轻量任务:阻塞时自动卸载,让一个请求一个线程的写法重新可行。它提升的是阻塞场景下的吞吐上限,不是单任务速度。
模式匹配:让数据形状成为控制流
模式匹配把「判断类型 → 强转 → 取字段」三步合并为一次声明:if (o instanceof Point(int x, int y))。在 switch 中配合 sealed 接口,还能让编译器检查分支是否穷尽。
SequencedCollection:集合终于有了「两端」
JDK 21 为 List、Deque、LinkedHashSet、SortedSet、LinkedHashMap、SortedMap 补上了统一的「首尾」API:addFirst、addLast、getFirst、getLast、reversed。以前每个实现各写一套,现在一套接口覆盖。
分代 ZGC:把停顿压到亚毫秒
JDK 21 的 ZGC 增加了分代模式:年轻代频繁回收、老年代偶尔回收,在保持亚毫秒级停顿的同时显著改善吞吐。它是大堆、低延迟服务的选项,不是所有场景的默认答案。
结构化并发:让任务有作用域
结构化并发把一组并发子任务放进一个作用域:父任务等待所有子任务结束,任一失败就取消其余,不再留下孤儿线程。JDK 21 中它是预览 API,配合虚拟线程和 ScopedValue 构成新的并发编程模型。
Scoped Values:有作用域的不可变上下文
ScopedValue 用「在某个作用域内绑定一个不可变值」替代 ThreadLocal 的可变副本:作用域结束自动失效,不需要 remove,也不会因为虚拟线程数量巨大而产生大量副本。JDK 21 是预览,JDK 25 转正。
预览特性:试用草案,而不是半成品
预览特性是已经进入 JDK、但尚未永久的语言或 API 改动:必须显式开启,可能在下一个版本调整或移除。JDK 21 同时存在 final、preview、incubator、experimental 四种状态,分清它们是升级不踩坑的前提。
FFM:用 Arena 和 MemorySegment 取代 JNI
Foreign Function & Memory API 让 Java 直接调用本地函数、管理堆外内存,并用 Arena 把「谁负责释放」变成可验证的生命周期约束。JDK 21 是第三轮预览,JDK 22 转正。
为什么是这四步METHOD
- 心智模型:先建立一张能自洽的图。没有模型,细节只是碎片。
- 机制拆解:看 JDK 如何实现,理解设计取舍与代价。
- 落地实践:把机制落到代码、参数、排障步骤上。
- 费曼自检:用自己的话复述,暴露理解漏洞。回答不了就回到对应小节。