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