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 协程特性了。

所以就有了标题的感慨。

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

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

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

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

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

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

© 2021 V2EX