曾经我以为 Java21 的虚拟线程是银弹... 结果发现现实引力太重,根本飞不起来,要飞必须大量的库需要适配,比如把 synchronized 用的地方改掉。
再比如,最基本的 MySQL 的 JDBC 就还没适配。 https://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 240 天前
@codingmiao 效果怎么样
|
14
codingmiao 235 天前
@marding 挺好的,原来 16 核 CPU 直接拉满,改虚拟线程后 3 、4 个核的样子就能撑住。关键是改动量很少,升级到 21 ,换了几个太老的 maven 依赖,把线程换成虚拟线程就完事了。
|