V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
B1ankCat
V2EX  ›  程序员

JDK19 发布了,终于迎来了虚拟线程

  •  
  •   B1ankCat · 2022-09-21 17:00:15 +08:00 · 5072 次点击
    这是一个创建于 823 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Virtual Threads 的 Preview 终于来了,这个特性感觉会在下个 lts 也就是 21 稳定,让大部分依赖库,特别是服务器相关的库都升级到 21 去,这下你们该弃用 8 了吧( oracle 奸笑)~

    27 条回复    2022-09-23 23:05:22 +08:00
    yhvictor
        1
    yhvictor  
       2022-09-21 17:25:15 +08:00 via iPhone
    fiber 虽然比线程简单点,但我估计没需求的没需求,有需求的 thread 迁 fiber 一头包。
    Red998
        2
    Red998  
       2022-09-21 17:59:16 +08:00
    然并卵 市面上绝大部分都是 jdk8
    Geon97
        3
    Geon97  
       2022-09-21 17:59:19 +08:00   ❤️ 4
    或许也可以选择放弃 java
    nekoneko
        4
    nekoneko  
       2022-09-21 18:03:04 +08:00
    @redorblacck886 #2 我都不知道这 j8 什么时候能推到 j17, 自己用 j17 真的香, 在公司用 j8 难受
    QlanQ
        5
    QlanQ  
       2022-09-21 18:09:33 +08:00   ❤️ 1
    影响我用 Java 8 吗?
    bwangel
        6
    bwangel  
       2022-09-21 18:36:06 +08:00
    https://weibo.com/1773116334/M6CGfoyU0

    看到某大佬写了一个测试,貌似还有待提升。
    uiosun
        7
    uiosun  
       2022-09-21 18:38:04 +08:00
    > 这下你们该弃用 8 了吧

    我们不弃用 8 是因为高版本没优秀的功能吗?私以为这个逻辑不成立
    Leviathann
        8
    Leviathann  
       2022-09-21 18:42:55 +08:00
    @uiosun 弃用 8 那当然是因为 spring 不支持 8 了
    chendy
        9
    chendy  
       2022-09-21 19:55:02 +08:00
    @bwangel 多线程抢一把锁必然不行啊……把查数据库逻辑换成 Trhead.sleep 效果就非常明显了
    LeegoYih
        10
    LeegoYih  
       2022-09-21 20:07:12 +08:00
    https://github.com/ebarlas/project-loom-comparison
    提升还是很明显的,虽然比不过 Go 这种 stackless 的协程

    等下一个 LTS 版本
    Y29tL2gwd2Fy
        11
    Y29tL2gwd2Fy  
       2022-09-21 20:56:23 +08:00 via Android
    挺好的
    gankT
        12
    gankT  
       2022-09-21 20:58:10 +08:00
    我们公司现在用的还是 8
    Dragonphy
        13
    Dragonphy  
       2022-09-21 21:04:19 +08:00
    @nekoneko #4
    详细说说,我感觉没啥区别啊😂
    tomato1111
        14
    tomato1111  
       2022-09-21 21:08:53 +08:00 via Android
    换 kotlin 吧要不
    NXzCH8fP20468ML5
        15
    NXzCH8fP20468ML5  
       2022-09-21 21:08:55 +08:00
    有什么性能对比的数据吗,比如吞吐量,CPU 占用,内存占用,GC99 时间等。
    对比 Java8 和后续版本的,特别是 Java17 LTS 版本。
    hez2010
        16
    hez2010  
       2022-09-21 21:09:43 +08:00   ❤️ 3
    @LeegoYih 虽然但是,Go 的协程是 stackful 的,而 C++、C#、Rust 、Python 的协程才是 stackless 的
    Leviathann
        17
    Leviathann  
       2022-09-21 21:14:58 +08:00   ❤️ 1
    @bwangel 现在什么阿猫阿狗都是大佬了?连 jdbc 内部用了 synchronized ,而目前 virtual thread 只支持 Lock 都不知道?
    NXzCH8fP20468ML5
        18
    NXzCH8fP20468ML5  
       2022-09-21 21:23:55 +08:00
    @Leviathann 人家后面微博也说了,synchronized 改用 ReentrantLock 实现就行了。
    只能说 preview 是真的 preview ,即使 API 已经完成,标准库还有待改进。
    NXzCH8fP20468ML5
        19
    NXzCH8fP20468ML5  
       2022-09-21 21:32:41 +08:00
    Java 是主流语言里第 3 个使用 stackful 协程的。
    Go 自不必说,天生 stackful 更是广受青睐。
    C++过去通过 hack 系统调用方式实现,但由于库的分裂,基本上只能项目内部自嗨使用。
    Java 社区虽然繁荣,但大部分依然围绕于标准库和 spring ,android 周边,是比较容易推进的改造。
    可以说 Java 的协程成败,全看 spring 和 android 的支持程度
    ccppgo
        20
    ccppgo  
       2022-09-21 21:39:05 +08:00
    @xxfye java 跟 android 现在关系不怎么样了吧, Android 那边早都 kotlin 了, java 主要还是用于服务端, java 本身的协程成败我怎么觉得跟 Android 有关系也极小
    tomato1111
        21
    tomato1111  
       2022-09-22 06:25:20 +08:00 via Android
    @xxfye 安卓对 java 现在有个屁支持,安卓的 jdk 是最残废的。到现在才支持到 jdk11 ,况且你要是要兼容旧版本系统,jdk 新特性还不能拿来用。 这就是为什么谷歌要强推 kotlin 的主要原因,以后 java 跟安卓只会原来越没直接关系。
    wxyrrcj
        22
    wxyrrcj  
       2022-09-22 07:45:39 +08:00 via Android   ❤️ 1
    一堆用着 java8 写着 7 的语法
    todorov
        23
    todorov  
       2022-09-22 09:00:37 +08:00
    公司主流项目 JDK6 的万年屎山。
    我的苹果本都不能编译,还要安个虚拟机。
    janus77
        24
    janus77  
       2022-09-22 09:40:21 +08:00
    最后一句说错了,应该是“这下你们该用 8 了吧”
    cccjh
        25
    cccjh  
       2022-09-22 15:15:25 +08:00
    这个是 java 搞了那么多年的 loom 吗
    powerman
        26
    powerman  
       2022-09-22 17:40:00 +08:00
    @xxfye #19 只要解决 ThreadLocal 跟 Thread 这层抽象 应该就好了
    hez2010
        27
    hez2010  
       2022-09-23 23:05:22 +08:00
    @xxfye 安卓只是遵循 Java 的 ABI 暴露了一系列接口而已,底下根本连 JVM 都不是,别说 Java 19 了,前一阵子才刚刚兼容到 Java 11 ,之前更是万年的 Java 8 兼容。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3686 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:25 · PVG 12:25 · LAX 20:25 · JFK 23:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.