fundamentals
fundamentals/virtual-threads/index.md
medium
fundamentals-virtual-threads-index
JDK21 虚拟线程(Project Loom)三件事 — 何时该用/不用、pinning 陷阱、与线程池的关系。Use when 评估上虚拟线程 / 改 synchronized 防钉住 / 用 newVirtualThreadPerTaskExecutor 时。
子项索引
| 子项 | 一句话 |
|---|---|
| virtual-threads-when-to-use skill | 虚拟线程何时用何时不用 — IO 密集(调 DB/RPC/外部 API)一请求一虚拟线程收益大,CPU 密集计算无收益甚至更差 |
| virtual-threads-pinning-pitfall skill | 虚拟线程 pinning 陷阱 — synchronized 块内执行阻塞调用会把虚拟线程钉死在载体线程上无法卸载,改用 ReentrantLock |
| virtual-threads-vs-thread-pool skill | 虚拟线程与线程池的关系 — 创建极廉价不需池化,用 newVirtualThreadPerTaskExecutor 而非固定大小池;海量虚拟线程下慎用 ThreadLocal |
Virtual Threads · 子项索引
内功定位:原理 → 实践决策。虚拟线程(Project Loom,JDK21 正式)是 2025-26 高频考点,但用错(CPU 密集、synchronized 钉住、误池化)反而有害。每条回答一个独立决策。
按你正在做的事下钻:
| 你在做什么 | 进哪个 |
|---|---|
| 评估某段逻辑/某个服务该不该上虚拟线程,IO 密集还是 CPU 密集 | when-to-use |
| 担心 synchronized 块里阻塞把载体线程钉住(pinning),想改 ReentrantLock | pinning-pitfall |
| 不知道虚拟线程要不要池化、怎么建 Executor、ThreadLocal 还能不能用 | vs-thread-pool |