Java21 make Java great again

2023-06-16 08:21:18 +08:00
 javak

今天用了下 oracle 放出来的 Java21 早期版本,( Java21 正式版要今年 9.19 发布)。

主要是为了测试虚拟线程( Java21 开始虚拟线程就是正式版了),这是是一个类是 go 协程的东西。

我搞了 100 万个任务,每个任务一个线程模式,效果非常惊艳炸裂。cpu 、内存消耗非常稳定,也不高。相同情况用 Java 之前的普通线程( Java21 开始叫平台线程)试了下,吞吐完全不行,而且 CPU 、内存占用很高、起伏也很大。

上面只是随手简单一测,并不严格和规范。但是效果我觉得还是能说明问题,那就是很强、很惊艳。我认为现在已经算是可以追平之前 go 吹爆的 go 协程特性了。

所以就有了标题的感慨。

10982 次点击
所在节点    Java
98 条回复
wenbingkun
2023-06-16 09:43:58 +08:00
继续 jdk8 ,祖宗之法不可变🐶
diagnostics
2023-06-16 09:45:47 +08:00
既然是 Java 的爱好者,那么连看完 JEP-425 的时间都没吗?这玩意用 actor 也差不多吧?只不过相比 Actor 代码改动不大而已。
jjx
2023-06-16 09:45:51 +08:00
喜欢 go 的, 主要就是不想搞 java 那套
所以,不会因为这个特性从 go 转到 java
LeegoYih
2023-06-16 09:48:22 +08:00
喜报:Java 好起来了
悲报:八股文更多了
chuck1in
2023-06-16 09:53:07 +08:00
@dreamramon springboot3 不是原生支持云原生吗。
wangxiaodong
2023-06-16 10:02:35 +08:00
@diagnostics 可贵的一点是,虚拟线程对 Thread 池的 API 几乎完全兼容的,不大动就能兼容 Java 老项目,你 Actor 可是引入挺多依赖嘛。

@ql562482472 JDK Foreign Function 也在 JDK21 预览特性列表中的。
voidmnwzp
2023-06-16 10:12:26 +08:00
1.国内 jdk 版本超过 8 的公司不足 5%
voidmnwzp
2023-06-16 10:12:42 +08:00
TWorldIsNButThis
2023-06-16 10:14:06 +08:00
@diagnostics 还在 actor
Scala 都不整这个玩 fiber 了
voidmnwzp
2023-06-16 10:16:20 +08:00
@voidmnwzp #28 2.go func(){} 和 Thread.startVirtualThread(() -> {...}); 谁更简洁一目了然
wangxiaodong
2023-06-16 10:28:09 +08:00
@voidmnwzp 提案上作者也说了,本来想用 go x()或 await/async 的方式,但为了让以前用 Thread API 的老程序受益,就直接改造 Thread 了,人家并不是不能更简化,人家是格局大!
whileFalse
2023-06-16 10:37:21 +08:00
@SuperManNoPain 介个怎么发音
twofox
2023-06-16 10:47:21 +08:00
我有个问题,既然虚拟线程不是真正的多线程。那我的数据库事务是不是都可以用同一个了
mmdsun
2023-06-16 10:51:25 +08:00
手里项目已经是 spring boot 3.1 + JDK 20 了, 坐等 JDK 21 更新
yty2012g
2023-06-16 10:54:37 +08:00
21 的虚拟线程解决 ThreadLocal 的问题了么?我记得好像是这个版本的还不支持 ThreadLocal 。
mgzu
2023-06-16 10:59:16 +08:00
28Sv0ngQfIE7Yloe
2023-06-16 11:05:34 +08:00
某国民级的游戏服务端刚刚从 7 升级到 8....
Bazingal
2023-06-16 11:12:12 +08:00
@totoro52 请教下是什么机制 go 有其它语言做不到的
yty2012g
2023-06-16 11:12:14 +08:00
@mgzu #36 感谢感谢。我们现在各种 wrap ExecutorSerivce 来传递各种各样的 ThreadLocal Context ,不知道换了还能不能生效了
monkeyWie
2023-06-16 11:13:19 +08:00
@mgzu 这点就足够吊打 go 协程了

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

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

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

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

© 2021 V2EX