发布时间:2026/6/19 16:50:13
虚拟线程整理
一、 核心概念与底层原理1. 什么是虚拟线程虚拟线程是 JDK 21 正式引入的轻量级并发原语。它不是操作系统级别的线程而是由 JVM 在用户态管理的极轻量级对象。其核心目标是以极低的成本支持超高并发彻底解决传统线程模型在 I/O 密集型场景下的瓶颈。2. M:N 调度模型传统模型 (1:1)一个 Java 线程Platform Thread对应一个操作系统线程。OS 线程的创建、销毁和上下文切换成本极高通常占用 1MB 内存导致并发上限通常在几千左右。虚拟线程 (M:N)M 个虚拟线程复用 N 个载体线程Carrier Thread。载体线程的数量通常等于 CPU 核心数。虚拟线程极其轻量创建百万级虚拟线程毫无压力。3. 核心运行机制挂载与卸载 (Mount/Unmount)虚拟线程的调度不依赖操作系统的抢占式调度而是基于协作式调度挂载 (Mount)虚拟线程被绑定到一个载体线程上此时它真正占用了 CPU 核心执行代码。卸载 (Unmount)当虚拟线程执行到阻塞操作如 I/O 读写、LockSupport.park()、Thread.sleep()时JVM 会自动将其从载体线程上“摘除”。恢复 (Remount)阻塞操作完成后JVM 会自动将其重新挂载到某个空闲的载体线程上继续执行。4. 调度器ForkJoinPool 与 Work-Stealing虚拟线程默认运行在一个全局的ForkJoinPool中。工作窃取 (Work-Stealing)当某个载体线程的本地队列为空时它会主动从其他繁忙的载体线程队列中“偷”任务来执行从而最大化 CPU 利用率避免线程饥饿。二、 为什么需要虚拟线程对比分析表格维度传统平台线程 (Platform Thread)协程/手动让出 (如 Kotlin Coroutines)虚拟线程 (Virtual Threads)内存开销极高~1MB/线程极低几KB极低初始仅几百字节并发上限数千数十万数百万编程范式同步阻塞代码异步/挂起函数需学习新语法纯同步阻塞代码阻塞处理阻塞 OS 线程浪费 CPU需手动标记suspend关键字自动检测并让出载体生态兼容完美需特定框架支持完美兼容现有 JDK API核心优势总结虚拟线程让开发者用写传统同步阻塞代码的方式获得媲美异步非阻塞Reactive的高并发性能。三、 最佳实践与使用方式1. 创建与执行// 方式 1直接启动适用于少量临时任务 Thread.startVirtualThread(() - { System.out.println(Hello Virtual Thread!); }); // 方式 2使用 ExecutorService强烈推荐便于资源管理和优雅关闭 try (var executor Executors.newVirtualThreadPerTaskExecutor()) { IntStream.range(0, 100_000).forEach(i - { executor.submit(() - { Thread.sleep(Duration.ofSeconds(1)); // 阻塞时自动让出载体 return i; }); }); } // try-with-resources 会自动等待所有任务完成并关闭2. 核心使用原则⚠️ 避坑指南不要池化虚拟线程虚拟线程是“用完即弃”的消耗品创建和销毁成本极低。永远不要使用固定大小的线程池来运行虚拟线程应使用newVirtualThreadPerTaskExecutor()让每个任务独占一个虚拟线程。仅适用于 I/O 密集型任务虚拟线程的优势在于处理高并发 I/O网络请求、数据库查询、文件读写。对于 CPU 密集型任务虚拟线程没有性能优势甚至可能因为上下文切换带来额外开销。避免长时间 Pinning固定如果在synchronized块或native方法中发生阻塞虚拟线程无法卸载会连带把载体线程一起阻塞。应尽量使用ReentrantLock替代synchronized。四、 适用场景与局限性绝佳适用场景高并发微服务网关处理海量 HTTP 请求。数据聚合服务同时调用数十个下游微服务并等待结果。爬虫与批量数据处理高并发的网络 I/O 操作。传统遗留系统改造无需重构为 WebFlux/RxJava只需升级 JDK 并替换线程池即可获得数倍的吞吐量提升。不适用场景纯 CPU 密集型计算如视频编解码、复杂数学运算应使用传统线程池或并行流。强依赖底层 OS 线程绑定的场景如某些需要绑定特定 CPU 核心的底层系统编程。

相关新闻

源头工厂短视频降本怎么做?测评工具实测爆款复刻拍摄降低成本效果
2026/6/13 11:50:10

源头工厂短视频降本怎么做?测评工具实测爆款复刻拍摄降低成本效果

源头工厂做短视频,最容易遇到的问题不是没有内容可拍,而是拍摄和剪辑总在重复。新品来了要拍一轮,直播结束要剪一轮,投放素材不够要补一轮,矩阵账号需要更新又要再做一批版本。每一次看起来都是正常需求,但…

阅读更多
【计算机毕业设计案例】基于springboot+微信小程序的热门游戏商城小程序(程序+文档+讲解+定制)
2026/6/15 1:13:05

【计算机毕业设计案例】基于springboot+微信小程序的热门游戏商城小程序(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
小程序毕设选题推荐:基于springboot+微信小程序的热门游戏商城小程序【附源码、mysql、文档、调试+代码讲解+全bao等】
2026/6/13 22:32:28

小程序毕设选题推荐:基于springboot+微信小程序的热门游戏商城小程序【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
从日志到恢复:MIT6.830 Lab6中SimpleDB的故障恢复机制深度解析
2026/6/19 15:58:51

从日志到恢复:MIT6.830 Lab6中SimpleDB的故障恢复机制深度解析

1. 日志:数据库故障恢复的基石 当你用手机银行转账时,突然手机黑屏重启,你会担心钱"消失"吗?数据库系统正是通过日志机制确保这类意外不会发生。在MIT6.830 Lab6中,SimpleDB用五种日志记录构建了安全网&…

阅读更多
如何5分钟获得免费OpenAI API密钥:开启零成本AI开发之旅
2026/6/19 15:58:51

如何5分钟获得免费OpenAI API密钥:开启零成本AI开发之旅

如何5分钟获得免费OpenAI API密钥:开启零成本AI开发之旅 【免费下载链接】FREE-openai-api-keys collection for free openai keys to use in your projects 项目地址: https://gitcode.com/gh_mirrors/fr/FREE-openai-api-keys 你是否曾因OpenAI API的高昂费…

阅读更多
Java反序列化漏洞原理与实战:以CVE-2014-3120为例
2026/6/19 15:58:51

Java反序列化漏洞原理与实战:以CVE-2014-3120为例

1. 项目概述:一次经典的Java反序列化漏洞之旅CVE-2014-3120,对于很多从事应用安全研究或渗透测试的朋友来说,这是一个绕不开的里程碑式漏洞。它发生在Elasticsearch 1.2.0及之前的版本中,核心问题在于其默认启用的动态脚本功能&am…

阅读更多
【安全】从数学到代码:椭圆曲线加密算法(ECC)实战解析
2026/6/19 15:58:51

【安全】从数学到代码:椭圆曲线加密算法(ECC)实战解析

1. 椭圆曲线加密算法(ECC)初探 第一次听说椭圆曲线加密算法是在2013年比特币大火的时候。当时我负责一个金融支付系统的安全模块开发,领导突然要求我们把RSA换成ECC,理由是"比特币都在用这个"。说实话,刚开始接触ECC时,…

阅读更多
【MATLAB】从原始数据到专业图表:自动化处理与高级figure定制
2026/6/19 15:58:51

【MATLAB】从原始数据到专业图表:自动化处理与高级figure定制

1. 数据导入与清洗:从杂乱文本到规整矩阵 处理实验数据时,最头疼的莫过于面对那些带着复杂题头、格式混乱的文本文件。我最近接手的一个电机控制实验项目,原始数据文件里混杂着传感器编号、时间戳、单位说明,甚至还有实验员手写的…

阅读更多
Django毕业设计-基于 Django+Vue 的电信资费管理系统的设计与实现 基于 Django+Vue 的通信资费综合管理平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)
2026/6/19 14:58:51

Django毕业设计-基于 Django+Vue 的电信资费管理系统的设计与实现 基于 Django+Vue 的通信资费综合管理平台(源码+LW+部署文档+全bao+远程调试+代码讲解等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/17 23:21:18

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/18 4:35:02

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/18 15:04:04

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
AI率高怎么降?10款降AI率网站盘点,含免费方案
2026/6/19 0:58:49

AI率高怎么降?10款降AI率网站盘点,含免费方案

2026年毕业季临近,不少同学的论文焦虑已经从“重复率不达标”转到了“AI率超标”上:好不容易把内容改到逻辑通顺,提交检测却因为几段AI辅助生成的内容、或是表达过于规整被打回,导师要求限期整改,辛苦熬了几个通宵的成…

阅读更多
FIFA 23 Live Editor完全指南:打造你的专属足球世界
2026/6/19 0:58:49

FIFA 23 Live Editor完全指南:打造你的专属足球世界

FIFA 23 Live Editor完全指南:打造你的专属足球世界 【免费下载链接】FIFA-23-Live-Editor FIFA 23 Live Editor 项目地址: https://gitcode.com/gh_mirrors/fi/FIFA-23-Live-Editor 还在为FIFA 23中无法实现的足球梦想而烦恼吗?想要组建那支只存…

阅读更多
EasyLPAC:5个关键步骤掌握专业级eUICC智能卡管理工具
2026/6/19 0:58:49

EasyLPAC:5个关键步骤掌握专业级eUICC智能卡管理工具

EasyLPAC:5个关键步骤掌握专业级eUICC智能卡管理工具 【免费下载链接】EasyLPAC lpac GUI Frontend 项目地址: https://gitcode.com/gh_mirrors/ea/EasyLPAC EasyLPAC是一款专为eUICC智能卡管理设计的图形化界面工具,基于lpac核心构建&#xff0c…

阅读更多
GIT修改用户名
2026/6/17 19:45:33

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/18 14:35:19

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/18 15:23:49

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多