Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
分布式架构
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
ChatGPT
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
GitHub工具
更多话题
用Java 19实现类似Go并发 - mccue
22-05-04
banq
线程通常很昂贵:
操作系统没有办法准确知道一个线程需要多少堆栈空间,所以它分配的数量大约是一兆字节。
解决这个问题的方法是实现一种机制,即利用有限数量的操作系统线程,并在其之上处理大量的 "逻辑线程"。
对于大多数语言来说,这意味着添加某种形式的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/目录添加到你的路径中。
详细点击标题
2
并发编程
java19
Loom虚拟线程
Go语言