虚拟线程是Project Loom的核心成果,以极低的成本实现百万级并发,是Java并发编程的革命性突破。
本文系统介绍虚拟线程的设计理念、核心特性和实战应用,帮助你拥抱Java并发的未来。
一、线程模型演进
1.1 并发模型对比
| 模型 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 平台线程 | 1:1映射OS线程 | 稳定可靠 | 资源消耗大 |
| 协程 | M:N映射 | 轻量级 | 需要特殊支持 |
| 虚拟线程 | M:N映射 | 轻量级+平台线程API | 新特性 |
2026/8/19大约 5 分钟
虚拟线程是Project Loom的核心成果,以极低的成本实现百万级并发,是Java并发编程的革命性突破。
本文系统介绍虚拟线程的设计理念、核心特性和实战应用,帮助你拥抱Java并发的未来。
| 模型 | 特点 | 优点 | 缺点 |
|---|---|---|---|
| 平台线程 | 1:1映射OS线程 | 稳定可靠 | 资源消耗大 |
| 协程 | M:N映射 | 轻量级 | 需要特殊支持 |
| 虚拟线程 | M:N映射 | 轻量级+平台线程API | 新特性 |
虚拟线程(Virtual Thread)是 JDK 21 正式引入的革命性特性,它让 Java 开发者可以用同步代码的风格编写高并发程序。但虚拟线程不只是"轻量级线程",它还带来了结构化并发(Structured Concurrency)和 Scoped Values 等新范式。本文将深入探讨虚拟线程的进阶用法、原理、陷阱以及与传统并发模型的对比。
┌──────────────────────────────────────────────────────────────┐
│ 平台线程 vs 虚拟线程 │
├──────────────────┬───────────────────┬───────────────────────┤
│ 特性 │ 平台线程 │ 虚拟线程 │
│ │ (Platform Thread) │ (Virtual Thread) │
├──────────────────┼───────────────────┼───────────────────────┤
│ 底层实现 │ OS线程(1:1映射) │ JVM调度(用户态) │
├──────────────────┼───────────────────┼───────────────────────┤
│ 内存占用 │ ~1MB栈空间 │ ~几KB(动态增长) │
├──────────────────┼───────────────────┼───────────────────────┤
│ 创建成本 │ 高(系统调用) │ 极低(Java对象) │
├──────────────────┼───────────────────┼───────────────────────┤
│ 上下文切换 │ 内核切换(~1μs) │ JVM切换(~100ns) │
├──────────────────┼───────────────────┼───────────────────────┤
│ 数量上限 │ ~数千 │ ~数百万 │
├──────────────────┼───────────────────┼───────────────────────┤
│ 调度方式 │ OS抢占式调度 │ ForkJoinPool协作式 │
├──────────────────┼───────────────────┼───────────────────────┤
│ 阻塞行为 │ 阻塞OS线程 │ 让出carrier线程 │
│ │ (浪费资源) │ (不浪费资源) │
├──────────────────┼───────────────────┼───────────────────────┤
│ 适用场景 │ CPU密集型 │ IO密集型 │
├──────────────────┼───────────────────┼───────────────────────┤
│ API │ Thread │ Thread.ofVirtual() │
│ │ │ Thread.startVirtualThread│
└──────────────────┴───────────────────┴───────────────────────┘
Spring Boot 3 是五年来最大的版本跃迁。Jakarta EE 迁移、GraalVM 原生镜像、虚拟线程支持——每个都是重大变革。哪些影响你的代码?怎么平滑升级?
Spring Boot 版本演进:
2.x (2018-2022) → Java 8+
3.0 (2022-11) → Java 17+
3.1 (2023-05) → Docker Compose 支持
3.2 (2023-11) → 虚拟线程、RestClient
3.3 (2024-05) → Pulsar 支持、结构化日志
3.4 (2025-11) → 进一步原生镜像优化
核心变化:
1. Java 17 最低版本(推荐 21)
2. Jakarta EE 9+(javax → jakarta)
3. GraalVM 原生镜像一等公民
4. 虚拟线程支持(3.2+)
5. 可观测性内置(Micrometer + OTel)
JDK 虚拟线程完全指南:原理、使用与常见问题是Java并发编程的核心概念,它为程序提供了并行执行的能力,是提升系统性能的关键。
本文系统介绍了JDK 虚拟线程完全指南:原理、使用与常见问题的原理、使用方式和常见问题,帮助你掌握Java并发编程。
虚拟线程是由 JDK 而非操作系统管理的轻量级线程。它的工作原理可以概括为: