zoukankan      html  css  js  c++  java
  • 劲爆!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技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,抄袭者一律举报+投诉,并保留追究其法律责任的权利。

    近期热文推荐:

    1.1,000+ 道 Java面试题及答案整理(2021最新版)

    2.别在再满屏的 if/ else 了,试试策略模式,真香!!

    3.卧槽!Java 中的 xx ≠ null 是什么新语法?

    4.Spring Boot 2.6 正式发布,一大波新特性。。

    5.《Java开发手册(嵩山版)》最新发布,速速下载!

    觉得不错,别忘了随手点赞+转发哦!

  • 相关阅读:
    Running APP 使用说明
    Android 控件八 WebView 控件
    Android 控件七 ImageView 控件
    Android 控件六 CheckBox 控件
    Android 控件五 RadioButton 控件
    Android 控件四 EditText 控件
    Android 控件三 TextView 控件实现 Button
    Android 控件二 Button
    Android 基础控件演示实例
    Android 控件一 TextView
  • 原文地址:https://www.cnblogs.com/javastack/p/15668231.html
Copyright © 2011-2022 走看看