曾经我以为 Java21 的虚拟线程是银弹... - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
javak
V2EX    Java

曾经我以为 Java21 的虚拟线程是银弹...

  •  
  •   javak 2023-12-14 13:38:38 +08:00 4683 次点击
    这是一个创建于 670 天前的主题,其中的信息可能已经有所发展或是发生改变。

    曾经我以为 Java21 的虚拟线程是银弹... 结果发现现实引力太重,根本飞不起来,要飞必须大量的库需要适配,比如把 synchronized 用的地方改掉。

    再比如,最基本的 MySQL 的 JDBC 就还没适配。 http://github.com/mysql/mysql-connector-j/pull/91

    路漫漫啊

    14 条回复    2024-05-06 09:49:29 +08:00
    tomatocici2333
        1
    tomatocici2333  
       2023-12-14 13:41:51 +08:00
    没有银弹
    idealhs
        2
    idealhs  
       2023-12-14 13:47:41 +08:00
    和异步一样,底层需要具有异步实现。不过虚拟线程从语法层面上看起来就和同步方法没有任何区别了,异步还有颜色函数和传染性。
    iPisces77
        3
    iPisces77  
       2023-12-14 14:05:55 +08:00
    单独是 mysql 自己驱动不支持罢了...
    pg,oracle 都支持了的
    yazinnnn0
        4
    yazinnnn0  
       2023-12-14 14:20:58 +08:00
    用 mariadb 的驱动
    fgwmlhdkkkw
        5
    fgwmlhdkkkw  
       2023-12-14 14:30:46 +08:00 via Android
    但是你真的可以建设它!
    Aresxue
        6
    Aresxue  
       2023-12-14 14:35:30 +08:00
    软件工程没有银弹。
    synchronized 是可以在后续被 JVM 优化掉的,而且实在不行替换成 ReentrantLock 的操作也还是比较简单的。ThreadLocal 才麻烦,不过 scoped value 成熟后应该也可以搞的定。
    就是现阶段替换虚拟线程的成本和收益不明显而已,但如果是一个长远规划的项目早做早好,小项目玩玩也可以。
    kenvix
        7
    kenvix  
       2023-12-14 14:44:31 +08:00
    未来仍可期,Loom 仍然还是一个很年轻的东西,而且这方面的优化在理论上也是可行的只是比较复杂,等下一个 LTS 的时候或许会好很多
    chendy
        8
    chendy  
       2023-12-14 15:05:08 +08:00
    其实吧,除非资源真的很紧张或者规模真的很大,这玩意约等于没用
    先蹲个三五年再说吧
    chirsgod
        9
    chirsgod  
       2023-12-15 10:46:57 +08:00
    上次就看知乎的一个人分析,等到 java25 结构化并发的东西加上周围配套组件都适配后,才是曙光到来。现在是黎明前最后的黑暗了。
    sam384sp4
        10
    sam384sp4  
       2023-12-15 11:55:37 +08:00
    上 c#把,异步生态很完善了
    dddys
        11
    dddys  
       2023-12-17 15:32:55 +08:00
    给 jdbc 提 pr
    codingmiao
        12
    codingmiao  
       2023-12-22 23:35:51 +08:00
    我这有个屎山代码,大致业务是处理 kafka 的数据,来一条数据就拉一个线程去处理,需要保证一致性的地方就在那 Thread.sleep 。。然后今年数据量翻了好几翻,所以,这屎山需要的线程数达到了四五千,我很想去重构它,但是堆积的业务太多根本改不动,还好虚拟线程来了,只要把起线程的地方改成起虚拟线程就好了。
    marding
        13
    marding  
       2024-04-30 15:34:58 +08:00
    @codingmiao 效果怎么样
    codingmiao
        14
    codingmiao  
       2024-05-06 09:49:29 +08:00
    @marding 挺好的,原来 16 核 CPU 直接拉满,改虚拟线程后 3 、4 个核的样子就能撑住。关键是改动量很少,升级到 21 ,换了几个太老的 maven 依赖,把线程换成虚拟线程就完事了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5900 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 06:15 PVG 14:15 LAX 23:15 JFK 02:15
    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