大家好,我是栈管理员!我们都知道Java目前最小的系统调度单元只支持线程。官方不支持协程,但是可以通过第三方框架实现。估计很少有人会用。多线程可以满足需求。好消息是,在不久的将来,Java将开始支持协程。这真是一个振奋人心的消息!!在openjdk的官网上,2021/11/15创建了一个新特性:JEPdraft:VirtualThreads(Preview)虚拟线程,让我们看看它到底是个什么鬼:虚拟线程是一种低成本、轻量级的实现用户态线程可以充分利用可用的硬件,大大减少编写、维护和监控高并发应用程序的工作量。低成本+轻量级+用户态,这就是协程的定义。.我们都知道必须非常注意线程的使用,因为线程的创建和销毁都会消耗系统资源,所以有了线程池,但这还不够,因为线程的数量是有限的,线程会阻塞操作系统线程,这不能尽可能地增加吞吐量。因为使用线程的成本非常高,有虚拟线程,也就是用户态线程,成本相当低,而且调度完全由用户控制(JDK中的scheduler)。也可以阻塞,但是不需要阻塞操作系统线程,充分提高了硬件利用率,高并发也提高了一个数量级,从而实现了高吞吐量。虚拟线程创建方法:虚拟线程是java.lang.Thread的一种实现,可以使用java.lang.Thread.Builder接口来创建,如下:Threadthread=Thread.ofVirtual().name("javastack")。未启动(可运行);也可以通过线程工厂类创建:ThreadFactoryfactory=Thread.ofVirtual().factory();并且,您可以使用Thread.isVirtual()方法来确定它是否是虚拟线程。一个虚拟线程的载体必须是一个线程,多个虚拟线程实例可以运行在同一个线程中。目前这还是个草稿,一个预览特性,很多细节不是很确定,是不是叫协程?还是纤维?还是虚拟线程?现在还没有官方的中文资料,不管叫什么,大家都知道Java中的“协程”要来了!有了协程,Java的并发能力会上N步……让我们拭目以待。目前最新的版本是JDK17,看看具体登陆哪个JDK版本。到时候栈长给大家讲解和分享,大家可以持续关注公众号Java技术栈,公众号会推送尽快吧,不要走开,我也写了很多多线程的教程,可以在公众号菜单中阅读。具体细节和后续进展可以参考官方说明:https://openjdk.java.net/jeps...好了,今天的分享就到这里,栈长会分享更多有趣的Java技术和最新技术资料,关注公众号Java技术栈第一时间推送。我也整理了Java主流面试题和参考答案,在公众号后台回复关键词“面试”刷新题型。最后,您认为为什么Java直到现在才开始考虑协程?欢迎留言讨论!这真是一个天大的好消息,转发并分享给更多的Javaer朋友吧!版权声明:本文为公众号《Java技术栈》原创,原创不易,转载或引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究权利法律责任。近期热点文章推荐:1.1,000+Java面试题及答案(2021最新版)2.别在满屏的if/else中,试试策略模式,真的很好吃!!3.操!Java中xx≠null的新语法是什么?4、SpringBoot2.6正式发布,一大波新特性。.5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
