大家 Java 21 的 虚拟线程用起来了吗?

108 天前
 hepin1989

我说一下我目前的数据:

线程数下降 1200+ 内存下降:5pt CPU 下降:10pt

感觉并没有 N 倍提升,是不是因为我的应用本身就是大部分都是 异步代码的 原因?

4837 次点击
所在节点    程序员
53 条回复
dbpe
108 天前
Java 的虚拟线程。。。emmm 。。。哎。。。

什么时候可以像 kt 一样。。await 直接用。。
BeiChuanAlex
108 天前
协程?

现在还在用 jdk 8 的路过~~~~~~~~~~~
Dragonphy
108 天前
@lmshl 你的图漏信息了
Dragonphy
108 天前
Java 21 虚拟线程的陷阱:我们在 TPC-C for PostgreSQL 中遭遇死锁
https://mp.weixin.qq.com/s/BfDd08j2jQwIOSaxf_mgww
zed1018
108 天前
@kkwa56188 请问不升级等到 CVE 高风险漏洞的时候一下升炸十天半个月都 migrate 不完怎么办。怎么老是有这种思想,breaking changes 应该是早发现早治疗,一定要等债务大到爆炸才解决,是想着反正我就干一两年,相信后人的智慧吗?
cloudyplain
108 天前
个人感觉:虚拟线程最大好处是对编程友好(特别是异步,不借助语法糖实现 await),性能方面:对异步(netty 、vert.x)甚至可能下降,同步也不见得有多少显著提升(一般是业务代码占大头,helloworld 除外)
yooomu
108 天前
在一个数据迁移的项目下试用了一下,高度 IO 密集型,使用传统线程池并发根本上不去,CPU 占用过山车。换用虚拟线程,CPU 稳定吃满,迁移效率大幅提升
Goooooos
108 天前
percent 缩写一般是 pct ,建议别乱缩写,用%谁都看得懂
ljsh093
108 天前
@lmshl #7 公网数据库 ip 也往外发?
ychost
108 天前
虚拟线程对异步本来就没有提升,可能还会下降,对同步代码提升很大
jjianwen68
108 天前
原本多线程的程序,话说要怎么用虚拟线程,在每个线程耗时处理的地方再开虚拟现场处理,进一步提升效率吗
liouop
108 天前
目前项目还在 jdk11 kotlin1.9 。。想知道大家的虚拟线程的使用场景都是用来做什么 并发请求数据、数据库 or 计算处理?
wocanmei
108 天前
感觉内存和 cpu 优化不明显,用处不大吧
wanguorui123
108 天前
大部分情况下瓶颈在数据库
yidinghe
108 天前
虚拟线程的好处,一是降低操作系统负担,方便虚拟机自行根据硬件资源调整;二是因为减少了异步代码,可以更方便的使用 ThreadLocal 等工具。总之,它在设计编码方面带来的负担降低是非常显著的。
zhady009
108 天前
虚拟线程不会让你的代码变快而且还会变慢些,主要还是能提供吞吐量 CPU 利用率,而且代码风格不用变还是同步的写法
UNCLOSABLE
107 天前
@yooomu 哦?能不能描述以下实现方案啊,感觉很有用啊
yooomu
107 天前
@UNCLOSABLE 就是把原来的使用传统线程池的地方换成调用 Executors.newVirtualThreadPerTaskExecutor()使用虚拟线程执行任务,然后使用 Semaphore 来控制并发量,使用起来和传统线程没多大区别。因为需要从另一个服务器拉数据,一开始没控制并发量,直接把那台服务器干崩了,可见虚拟线程还是挺猛的
zjcoding
107 天前
@lmshl #7
是担心 V 友们黑不掉你的数据库吗
Paracosm
107 天前
@lmshl ip 没遮

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

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

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

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

© 2021 V2EX