Java21 make Java great again

328 天前
 javak

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

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

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

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

所以就有了标题的感慨。

10446 次点击
所在节点    Java
98 条回复
bunnyblueair
328 天前
不错 希望摆脱 java 8
dreamramon
328 天前
已经在一个小项目里面用了虚拟线程 6 个月了,效果非常好。
go 现在只剩能打包二进制文件这一个好处了。。。
可惜,这 2 年火的 ai ,只能用 python ,主流的库都在 python 。。。
Biluesgakki
328 天前
希望新项目都开始用 21 吧
wangxiaodong
328 天前
@javak 虚拟线程的性能确实惊艳,但我最最喜欢的 JDK21 预览特性,却是“main 函数简化”和“JDK Foreign Function(取代 JNA 和 JNI)”,前者抛弃写 class 的桎梏,后者可以跟底层的畅快交互。
https://congci.com/main/home/topics/java-programming/
totoro52
328 天前
@dreamramon go 还是云原生的扛把子,毕竟机制就摆在那,没得比
yazinnnn
328 天前
醒醒吧, 祖宗留下的 ThreadLocal 之法不可变

Scoped Values 还在孵化阶段, 离正式发布至少还差两年
SuperManNoPain
328 天前
MJGA !!
boatrain1111
328 天前
确实很惊艳,奈何只能自己玩玩,公司的项目还是 jdk8
hhjswf
328 天前
怎么感觉有点伪需求。
这种大量虚线程只能处理计算型任务吧? Java 里大部分痛点是 io 型吧?
dqzcwxb
328 天前
virtual thread 虚拟线程,直接把它当成当成对象去理解就行
创建 100 万个虚拟线程等于创建 100 万个对象罢了,实际上创建的平台线程(不被锁定的情况下)还是 cpu-1 的数量
wangxiaodong
328 天前
@hhjswf 并不伪,假设有两件事情要解决,我先解决“用户空间”的线程接待能力,也算搞定了 50%了。I/O 层面的可以再来个 JEP 来处理。
dqzcwxb
328 天前
@hhjswf #9 你完全说反了,虚拟线程对 cpu 密集型任务提升很少对 io 密集型任务提升很大
hakim
328 天前
2 楼说的是个问题,ai 相关的主流库都在 python ,想用 java 写个 side project 不容易
ql562482472
328 天前
@wangxiaodong #4 FFI 没进 21
Jxnujason
328 天前
你更任你更,工作开发继续 jdk8
monkeyWie
328 天前
虚拟线程不能用 synchronized 的问题解决了吗,反正只要所有框架的支持了我就直接升上去,到时候就可以把那该死的 threads.threads.max 直接给干掉了
fanxasy
328 天前
虚拟线程+GraalVM Native Image 赢!🐶
cheng6563
328 天前
21 是 LTS 吗?来的真晚啊总算是来了
Narcissu5
328 天前
@hhjswf 虚拟线程就是解决 IO 问题的
acapla
328 天前
期待 chatgpt 早日学会,然后教给我。。

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

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

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

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

© 2021 V2EX