劲爆!java协程要来了。。。(代码片段)

程序员小灰 程序员小灰     2023-02-24     692

关键词:

本文转载自公众号 Java技术栈

我们都知道,Java 目前最小的系统调度单元只支持线程,官方是不支持协程的,但可以通过第三方框架实现,估计也很少有人会用吧,多线程就能满足需求。

好消息来了,不久的将来,Java 要开始支持协程了,这真是劲爆消息啊!!

在 openjdk 的官网上,2021/11/15 这天创建了一个新的特性:

JEP draft: Virtual Threads (Preview)

虚拟线程,我们来看看是什么鬼:

虚拟线程是一种成本低廉、轻量级的用户模式的线程实现,它可以充分利用可用硬件,大幅减少编写、维护和监测高并发应用的工作量。

低成本+轻量级+用户态,这一看就是协程 的定义了。。

我们都知道使用线程是要十分注意的,因为线程的创建、销毁都十分消耗系统资源,所以有了线程池,但这还不够,因为线程的数量是有限的,线程会阻塞操作系统线程,无法尽可能的提高吞吐量。

因为使用线程的成本很高,所以才会有了虚拟线程,它是用户态线程,成本是相当低廉的,调度也完全由用户进行控制(JDK 中的调度器),它同样可以进行阻塞,但不用阻塞操作系统线程,充分提高了硬件利用率,高并发也上了一个量级,从而实现了高吞吐量。


虚拟线程创建方式:

虚拟线程是java.lang.Thread的一个实现,可以使用java.lang.Thread.Builder接口创建,如下所示:

Thread thread = Thread.ofVirtual()
     .name("javastack")
     .unstarted(runnable);

也可能会通过一个线程工厂类进行创建:

ThreadFactory factory = Thread.ofVirtual().factory();

并且,可以通过 Thread.isVirtual() 方法判断是否虚拟线程。

虚拟线程运行的载体必须是线程,同一个线程中可以运行多个虚拟线程实例。


目前这还是个草案,预览特性,很多细节并不是很确定,是不是叫协程?或者纤程?还是虚拟线程?现在也没有官方的中文资料,叫什么不重要,我们都知道的是,Java 中的 "协程" 它要来了!

有了协程,Java 的并发能力将会再上 N 个台阶……

我们还是拭目以待吧,目前最新版本是JDK 17,看它在哪个 JDK 版本中落地,到时候栈长再给大家解读分享,大家可以持续关注公众号Java技术栈,公众号第一时间推送,不要走开哦,多线程教程也写了一堆了,可以在公众号菜单中阅读。

具体细节和后续的的进展可以参考官方说明:

https://openjdk.java.net/jeps/8277131

好了,今天的分享就到这里了,后面栈长会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送,我也将主流 Java 面试题和参考答案都整理好了,在公众号后台回复关键字 "面试" 进行刷题。

最后,你觉得 Java 为什么到现在才开始考虑协程?欢迎留言讨论!

这真是个劲爆好消息,转发、分享给更多 Javaer 小伙伴们吧!

劲爆!java协程终于来了(代码片段)

点击关注公众号,Java干货及时送达出品|OSC开源社区(ID:oschina2013)从JDK19的概述页面来看,JDK19处于RampdownPhaseTwo阶段,整个功能集已被冻结,将不再对JEP进行改动。Java19只有7个新特性:405:RecordPatterns(Pr... 查看详情

劲爆!java通用泛型要来了。。

点击关注公众号,Java干货及时送达文|白开水出品|OSC开源社区(ID:oschina2013)Infoworld消息指出,根据OpenJDK提案,Java将获得通用泛型(universalgenerics),此举旨在使该语言更易于使用。不过该规... 查看详情

劲爆!java通用泛型要来了。。

文 : 白开水出品:OSC开源社区(ID:oschina2013)相关阅读:深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的?Infoworld消息指出,根据OpenJDK提案,Java将获得通用泛... 查看详情

spring6.0要来了,太强了!(代码片段)

点击关注公众号,Java干货及时送达出品|OSC开源社区(ID:oschina2013)SpringFramework6.0发布了首个RC版本。发布公告写道,SpringFramework6.0作为重大更新,目前RC1要求使用Java17或更高版本,并且已迁移到 JakartaEE9... 查看详情

java18都要来了,你不会还在用java8吧?(代码片段)

Java开发工具包(JDK)18将于2022年3月22日发布。新版本的标准Java将有九个新特性,该特性集已于12月9日冻结,进入Rampdown第一阶段。值得注意的是:JDK17是一个长期支持(LTS)版本,将获得Oracle至少八年的支持,但JDK1... 查看详情

spring6.0要来了,太强了!(代码片段)

出品|OSC开源社区(ID:oschina2013)SpringFramework6.0发布了首个RC版本。发布公告写道,SpringFramework6.0作为重大更新,目前RC1要求使用Java17或更高版本,并且已迁移到 JakartaEE9+(在 jakarta 命名空间中取代了以... 查看详情

面试官:大量请求redis不存在的数据,从而打倒数据库,有什么方案?

...推荐:1.1,000+道Java面试题及答案整理(2022最新版)2.劲爆!Java协程要来了。。。3.SpringBoot2.x教程,太全了!4.别再写满屏的爆爆爆炸类了,试试装饰器模式,这才是优雅的方式!!5.《Java开发手册&#... 查看详情

jdk19功能集冻结,虚拟线程终于要来了!(代码片段)

上一篇:JetBrains如何看待自己的软件在中国被频繁破解?从JDK19的概述页面来看,JDK19处于RampdownPhaseTwo阶段,整个功能集已被冻结,将不再对JEP进行改动。Java19只有7个新特性:405:RecordPatterns(Preview) 记录模式422:L... 查看详情

关于协程要搞懂的问题

协程为什么会有携程,解决什么问题?背景意义:同步的编程方式、异步的性能异步ioaioIo异步操作异步编程麻烦点在于多个线程共用一个fd原语操作,基本操作不是汇编就像一个线程一样协程的切换。等同于线程... 查看详情

关于协程要搞懂的问题

协程为什么会有携程,解决什么问题?背景意义:同步的编程方式、异步的性能异步ioaioIo异步操作异步编程麻烦点在于多个线程共用一个fd原语操作,基本操作不是汇编就像一个线程一样协程的切换。等同于线程... 查看详情

springboot2.5.5发布,2.6.0也要来了!(代码片段)

距离SpringBoot2.5.4发布一个月不到,SpringBoot2.5.5又来了!本次更新同步发布的版本还有SpringBoot2.4.11:这两个版本分别修复了41、32个bug,以及文档优化、依赖升级。又是两个bug优化版本,没什么好说的了,通... 查看详情

java14令人期待的5大新特性,打包工具终于要来了(代码片段)

随着新的Java发布生命周期的到来,新版本预计将于2020年3月发布,本文将对其中的5个主要特性作些概述。Java13刚刚发布给开发人员使用不久,最新版本的JDK于2019年9月发布。但是很少有公司现在改用了Java13,因为这个版本看起来... 查看详情

java18都要来了,你不会还在用java8吧?(代码片段)

文|罗奇奇出品|OSC开源社区(ID:oschina2013)Java开发工具包(JDK)18将于2022年3月22日发布。新版本的标准Java将有九个新特性,该特性集已于12月9日冻结,进入Rampdown第一阶段。值得注意的是:JDK17是一个长期支... 查看详情

java18要来了,你不会还在用java8吧?(代码片段)

点击关注公众号,Java干货及时送达文|罗奇奇出品 |OSC开源社区(ID:oschina2013)上一版:重磅!JDK17发布,Oracle宣布从JDK17开始正式免费。。Java开发工具包(JDK)18将于2022年3月22日发布。新版本的标准Java... 查看详情

java18要来了,你不会还在用java8吧?(代码片段)

点击关注公众号,实用技术文章及时了解文 |罗奇奇出品|OSC开源社区(ID:oschina2013)Java开发工具包(JDK)18将于2022年3月22日发布。新版本的标准Java将有九个新特性,该特性集已于12月9日冻结,进入Rampdown第... 查看详情

jenkins2.0要来了

Jenkins在2016/02/29日发布了2.0alpha版本,https://jenkins-ci.org/2.0/ ,改进界面,向前兼容,增加新功能:1.初始化时可以选择推荐插件或自定义插件2.可以用Groovy代码定义流程3.并且每个步骤是可视的: 当然还有更多新功能要添加... 查看详情

我还在生产玩jdk7,jdk15却要来了!|新特性尝鲜(代码片段)

自从JDK9之后,每年3月与9月JDK都会发布一个新的版本,而2020年9月即将引来JDK15。恰巧IDEA每四五个月会升级一个较大的版本,每次升级之后都会支持最新版本JDK引入的新功能。这几天升级了IDEA,顺便体验了一下JDK15的新特性。虽... 查看详情

unity怎么暂停协程✨unity协程管理方案(代码片段)

协程是游戏开发中非常常用的方法,类似一个子线程单独出来处理一些问题,性能开销较小。当然我们更多时候用的是他的延时执行功能😌😌😌使用多了,难免有这样那样的需求。比如:暂停。比如&... 查看详情