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

146 天前
 javak

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

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

路漫漫啊

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1000335

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX