前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java虚拟线程:一种低成本、轻量级、用户态的Java线程

Java虚拟线程:一种低成本、轻量级、用户态的Java线程

作者头像
芋道源码
发布2022-03-14 12:43:26
1K0
发布2022-03-14 12:43:26
举报
文章被收录于专栏:芋道源码1024芋道源码1024

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

来源:openjdk.java.net/jeps/8277131


OpenJDK在2021-11-15创建了一个草稿版JEP,如下图所示(链接地址:https://openjdk.java.net/jeps/8277131),我们接下来的文章将VIrtual Thread翻译为虚拟线程:

目标

1、为java.lang.Thread增加一种额外的实现,即虚拟线程,它能做到在几个G的JVM堆上创建几百万个活动的虚拟线程(这在现在的JDK中几乎不可能实现),并且表现出和现在的线程几乎一样的行为。2、对虚拟线程问题定位也可以通过已经存在的JDK工具,尽可能保持和现在的线程相似的方式。

“推荐下自己做的 Spring Boot 的实战项目: https://github.com/YunaiV/ruoyi-vue-pro

非目标

虚拟线程不是为了改变现在这种操作系统级别的线程的实现。虚拟线程不是为了自动将已经存在的线程构造方法自动转为虚拟线程。虚拟线程不是为了改变JMM。虚拟线程不是为了增加一种新的内部线程通信机制。除了并行流之外,虚拟线程也不是为了提供一种新的数据并行结构。

“推荐下自己做的 Spring Cloud 的实战项目: https://github.com/YunaiV/onemall

动机

Java语言作为过去几十年最成功预言之一,开发者广泛使用Java语言来编写并发应用。那么,java.lang.Thread就是他们最核心的依赖。Java线程的一些能力为我们提供了对程序很宝贵的洞察力,例如:线程的栈信息,线程dump,debug能力等。

但是,当前Java线程的实现是每个Java线程需要消耗一个操作系统线程。而操作系统线程这种资源是非常稀缺,非常宝贵的。而虚拟线程是java.lang.Thread一种用户态的实现,这就意味着当我们在虚拟线程上使用同步API时,是不会阻塞任何操作系统线程,硬件利用率接近最佳。

并且为了让开发者更方便的使用虚拟线程,它的设计让我们无需学习任何新的编程模型,它与Java的原始编程模型几乎一样。

创建

通过如下代码即可创建Java虚拟线程,通过如下代码可知,虚拟线程就是Thread的一种实现:

代码语言:javascript
复制
Thread thread = Thread.ofVirtual().name("duke").unstarted(runnable);

我们还可以通过Thread中的isVirtual()方法判断判断线程是否是虚拟线程。

当然,也可以通过工厂类创建一个虚拟线程:

代码语言:javascript
复制
ThreadFactory factory = Thread.ofVirtual().factory();


欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

已在知识星球更新源码解析如下:

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

代码语言:javascript
复制
文章有帮助的话,在看,转发吧。谢谢支持哟 (*^__^*)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 芋道源码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目标
  • 非目标
  • 动机
  • 创建
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档