Java 21 新特性:虚拟线程(Virtual Threads) – 乐科科官网
Skip to content
乐科科官网
乐科科中国
  • 首页
  • 解决方案
    • ESG解决方案
    • HR++人事解决方案
    • ServiceNow解决方案
  • 技术咨询
    • 数字化转型
  • 技术服务
    • 低代码平台开发
    • 移动应用开发
    • 对日软件外包
    • 企业软件定制
  • 关于我们
    • 公司介绍
    • 联系我们
    • 加入我们

电话:0574-28860655

联系我们

公众号

联系电话

+86-574-28860655

Java 21 新特性:虚拟线程(Virtual Threads)





上图中是JDK各个版本的发布历史。大版本JDK21在去年9月份闪亮登场,其中重量级的特性——虚拟线程在这个大版本中正式转正。


本文将详细介绍JDK21的定义、工作原理及其适用场景,并给出使用建议。



虚拟线程定义



线程术语定义

▶ 操作系统线程(OS Thread)

由操作系统管理,是操作系统调度的基本单位。


▶ 平台线程(Platform Thread)

Java.Lang.Thread 类的每个实例,都是一个平台线程,是 Java 对操作系统线程的包装,与操作系统是 1:1 映射。


▶ 虚拟线程(Virtual Thread)

一种在 Java 虚拟机(JVM)中实现的轻量级线程,也被称为用户线程。对应的实例 java.lang.VirtualThread 这个类。


和传统操作系统线程相比,Java 虚拟线程的创建和销毁速度更快,开销更小,可以大量创建,更适合轻量级任务场景。


▶ 载体线程(Carrier Thread)

指真正负责执行虚拟线程中任务的平台线程。一个虚拟线程装载到一个平台线程之后,那么这个平台线程就被称为虚拟线程的载体线程。



⬆ 虚拟线程工作模型


虚拟线程工作原理

虚拟线程(Virtual Thread)它不与特定的操作系统线程相绑定。它在平台线程上运行 Java 代码,但在代码的整个生命周期内不独占平台线程。这意味着许多虚拟线程可以在同一个平台线程上运行他们的 Java 代码。同时虚拟线程的成本很低,虚拟线程的数量可以比平台线程的数量大得多。



适用场景与使用建议



适用场景

  • 大量的 IO 阻塞等待任务,例如下游 RPC 调用,DB 查询等。虚拟线程采用协作式调度,线程主动放弃CPU,而不是由操作系统强制切换,这种模型可提高系统的吞吐量。

  • 大批量的处理时间较短的计算任务。



使用建议

无需池化虚拟线程:

虚拟线程占用的资源很少,因此可以大量地创建而无须考虑池化,它不需要跟平台线程池一样,平台线程的创建成本比较昂贵,所以通常选择去池化,去做共享,但是池化操作本身会引入额外开销,对于虚拟线程池化反而是得不偿失,使用虚拟线程我们抛弃池化的思维,用时创建,用完就扔。



JDK升级之难



尝试升级

去年本想尝试我司产品HR++人事管理系统升级一事,从8升级至17,但在升级的过程中发现,Mybatis-Plus版本过低,高版本的Mybatis-Plus API接口也做了非常大的改动。在代码层面使用Mybatis-Plus与数据库进行IO交互的场景又不计其数,只能暂时放下。



拥抱新特性

JDK版本更新非常快,从8开始几乎一年一个大版本。新特性更是层出不穷,连垃圾回收器都已经换了两代。但8依旧是最稳定且使用最广泛的版本,Oracle官方至今还在维护。


JDK 21的发布

为Java应用的性能优化带来了新的契机。

在之后的项目中,小编会用JDK21来构建。

如若有新的体验届时再来跟大家分享。



✦✦

温馨提示

由于微信公众号修改了推送规则,

没有加“星标★”的订阅号,

收到的推送只有标题和小图,

而且会慢慢收不到最新的推送。

想要不错过各类讯息,

小伙伴们可以将【乐科科集团】公众号

加个星标❤


你 “在看” 我吗?


  • 解决方案

    ESG解决方案

    HR++人事解决方案

    ServiceNow解决方案

  • 技术咨询

    数字化转型

  • 技术服务

    低代码平台开发

    移动应用开发

    对日软件外包

    企业软件定制

  • 关于我们

    公司介绍

    联系我们

    加入我们

  • 官方微信

    乐科科
  • 联系我们

    公司地址: 宁波市鄞州区天童北路933号和邦大厦A1802室

    联系电话: 0574-28860655

    公司邮箱: nb_sales@rococo.co.jp


© 宁波乐科科信息技术有限公司 浙ICP备10037731号-5