用Java 19实现类似Go并发 - mccue

线程通常很昂贵:

操作系统没有办法准确知道一个线程需要多少堆栈空间,所以它分配的数量大约是一兆字节。

解决这个问题的方法是实现一种机制,即利用有限数量的操作系统线程,并在其之上处理大量的 "逻辑线程"。

对于大多数语言来说,这意味着添加某种形式的async/await语法:

你在代码里放一个await,语言就知道它可以切换到处理另一个任务。

你只能在标记为async的代码中放置await。

这会带来其他问题。

Go编程语言与大多数语言不同,它是以 "非合作 "的方式实现这种杂耍的。

你不用明确地用async和await标记你的代码,运行时为你自动切分。

他们把这些廉价的线程称为 "goroutines"。

Java虚拟机将获得一个类似的功能,叫做 "虚拟线程"。

这不仅仅有利于Java,还有利于JVM上的每一种语言,包括Clojure、Groovy、Kotlin和Scala。

虚拟线程预计将于2022年9月20日作为 "预览 "功能出现在Java 19中。这意味着底层功能的实现已经完成并经过了测试,但公共API会有一些突破性的变化,必须明确选择进入。

Go中许多围绕并发性的模式都来自于你可以随意创建线程的设想。

由于Java即将加入这个俱乐部,现在似乎是一个很好的时机,可以通过Go的一些并发性例子,看看它们翻译过来会是什么样子。

如果你想跟着学,你可以在这里 here 得到一个早期访问构建。解压缩文件并将bin/目录添加到你的路径中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值