主要观点:JEP 505 的结构化并发已达 JDK 25 目标状态,通过 5 次预览迭代进化,旨在简化并行任务管理,提供更清晰安全框架,特别针对虚拟线程。
关键信息:
- 最新预览细化早期 API,
StructuredTaskScope
不再通过公共构造函数实例化,通过静态工厂方法StructuredTaskScope.open()
打开范围。 - 结构化并发解决并行编程的 3 个基本问题:严格限制子任务生命周期、可靠取消防止资源泄漏、通过结构化线程层次增强可观察性。
- API 围绕
java.util.concurrent.StructuredTaskScope
类,管理并发子任务,开发者在范围内分叉和连接子任务。 - 有多种工厂方法,如
open()
创建快速失败范围,open(Joiner)
可提供自定义策略,allSuccessfulOrThrow()
等方法用于不同的并发操作。 Joiner
接口有 3 个工厂方法,可直接实现支持自定义完成策略,onFork()
在分叉子任务时调用,onComplete()
在子任务完成时调用。- 范围的子任务继承
ScopedValue
绑定,JSON 线程转储格式可显示StructuredTaskScopes
的线程层次结构。
重要细节: - 示例代码展示结构化并发的基本使用模式,如创建范围、分叉任务、等待完成并获取结果。
- 不同预览版本代码对比,强调构造函数实例化到工厂方法的变化。
- 强调使用
Joiner
时要为每个StructuredTaskScope
创建新的Joiner
,且不能在不同范围或关闭后重用。 - 开放团队鼓励开发者在 JDK 25 中试验并提供反馈以成熟 API。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。