扫码阅读
手机扫码阅读
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阻塞等待处理的场景,但对于运算密集型任务,由于切换和挂起开销,不建议使用虚拟线程。
想要了解更多内容?


DevXTalk
扫码关注公众号
DevXTalk的其他文章
加入社区微信群
与行业大咖零距离交流学习


PMO实践白皮书
白皮书上线
白皮书上线