扫码阅读
手机扫码阅读
Java 虚拟线程
54 2024-08-23
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
查看原文:Java 虚拟线程
文章来源:
DevXTalk
扫码关注公众号
Java 虚拟线程摘要
概述
Java虚拟线程是解决传统线程资源消耗大的问题的轻量级实现。虚拟线程在JVM层面上管理,使用较少的系统资源,允许在一个或多个底层操作系统线程上运行。JEP 444将虚拟线程的功能纳入JDK 21,基于先前版本的反馈进行了最终定稿。
平台线程与虚拟线程
- 平台线程是对操作系统线程的包装,具有较大的线程堆栈和资源需求,适用于运行所有类型的任务。
- 虚拟线程作为轻量级线程,不绑定特定操作系统线程,可以在操作系统线程上运行Java代码,适用于执行阻塞I/O操作的任务。
使用虚拟线程的理由
虚拟线程在高并发高吞吐量的应用程序中提供规模扩展,适合处理许多执行阻塞I/O操作的并发任务,而不是提高速度。
使用虚拟线程
Java对Thread类进行了改造,提供了静态工厂方法创建平台线程和虚拟线程。线程池支持虚拟线程,通过Executors.newVirtualThreadPerTaskExecutor()创建。
平台线程与虚拟线程的性能和资源占用对比
性能测试显示虚拟线程在执行大量短任务时性能显著提升,并且资源占用测试表明在创建大量线程时虚拟线程不会占据大量内存空间。
虚拟线程调度器
JDK的虚拟线程调度器类似于ForkJoinPool,运行在FIFO模式下,可以调整并行数量。JVM通过mount和unmount操作在平台线程和虚拟线程之间进行调度。
虚拟线程适用场景
虚拟线程适用于处理大量短时计算任务和IO阻塞等待处理的场景,但对于运算密集型任务,由于切换和挂起开销,不建议使用虚拟线程。
想要了解更多内容?
查看原文:Java 虚拟线程
文章来源:
DevXTalk
扫码关注公众号
DevXTalk的其他文章
面向面试编程:utf8mb4_unicode_ci、utf8mb4_general_ci 有什么区别
面向面试编程:utf8mb4_unicode_ci、utf8mb4_general_ci 有什??
时序数据库 InfluxDB
时序数据库 InfluxDB为什么是InfluxDB?
2024软考回顾
最近各种事情都比较多很长时间没有更新了。主要精力就是投入在公司的工作上还有日常的一些琐事上,还有就是软考上。
MySQL 前缀索引究竟怎么个事
MySQL 前缀索引究竟怎么个事索引长度的限制MySQL 的每个单表中所创建的索引长度是有限制的,且对不同存储
解答 COUNT 函数的十个问题
解答 COUNT 函数的十个问题COUNT有几种用法?\x0d\x0aCOUNT函数主要有三种用法:COUNT(*):统计表中的行数,包括所有行,不论列中的值是否为NULL。
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线