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