平台线程(传统线程)是 OS 线程的 1:1 包装,创建成本高(MB 级栈)、数量上限几千——「每请求一线程」模型在高并发下被线程数卡死,这是响应式编程(WebFlux)试图用复杂回调解决的老大难。虚拟线程(JEP 444)由 JVM 调度、M:N 复用到少量载体(平台)线程上:虚拟线程遇到阻塞操作(socket read、锁等待)时从载体上卸载(unmount),载体线程去跑别的虚拟线程——代码还是同步写法,并发度却不再受 OS 线程数限制,单机百万级虚拟线程可行。

要点与边界:1)创建用 Thread.ofVirtual().start() 或 Executors.newVirtualThreadPerTaskExecutor(),虚拟线程便宜到「每任务一个新线程」、不需要池化(池化反而有害);2)pinning 问题——synchronized 块内阻塞会把载体线程一起钉死无法卸载,JDK 24 已修复大部分,老版本建议换 ReentrantLock;3)CPU 密集任务用虚拟线程没有收益(瓶颈是核数不是线程数);4)ThreadLocal 在百万虚拟线程下内存放大,新方案是 ScopedValue;5)与 WebFlux 不是替代而是竞争关系——同步代码获得接近响应式的伸缩性,但生态仍会以二者并存。追问方向:continuation(续体)的实现原理、结构化并发(StructuredTaskScope)如何与虚拟线程搭配。

(约 460 字)