JDK19 发布了,终于迎来了虚拟线程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
B1ankCat
V2EX    程序员

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

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

    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 的万年屎山。
    我的苹果本都不能编译,还要安个虚拟机。
    rb6221
        24
    rb6221  
       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     Solana     2583 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 04:46 PVG 12:46 LAX 21:46 JFK 00:46
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86