根据 OpenJDK 社区目前正在酝酿的计划,多线程编程对于 Java 开发人员来说可能会变得更容易。

结构化并发提案将引入一个库,该库将在不同线程中运行的多个任务视为单个工作单元。根据提案,新图书馆将简化错误处理和取消,提高可靠性并增强可观察性。该计划的目标包括提高多线程代码的可靠性和可观察性,并推广一种可以消除取消和关闭引起的常见风险的并发编程风格,例如线程泄漏和取消延迟。此时,结构化并发提议并非针对特定版本的 Java。

该提案指出,结构化并发是一种多线程编程方法,它保留了开发人员使用单线程代码的可读性和可维护性。它承载的原则是,如果一个任务拆分成并发的子任务,它们都返回到同一个地方:任务的代码块。通过返回相同的代码块,并发子任务的生命周期被限制在一个句法块中。因为兄弟子任务被限制在同一个块中,它们可以作为一个单元进行推理和管理。子任务代表任务(封闭块中的代码)工作,等待结果并监视它们是否失败。与单线程代码的结构化编程技术一样,多线程结构化并发的力量来自两个想法:通过代码块为执行流程定义良好的入口和出口点,以及将操作的生命周期严格嵌套在一种反映代码中嵌套的方式。

在运行时,结构化并发构建了一个树形的任务层次结构,同级子任务属于同一个父任务。树是单个线程的调用堆栈的并发对应物。

结构化并发是对虚拟线程的一种匹配,它是JDK提供的线程的轻量级实现。计划在今年 9 月为 Java 19 提供虚拟线程的预览。许多虚拟线程共享相同的操作系统线程,从而允许大量虚拟线程。这些可以表示行为的并发单元,甚至是 I/O 行为。因此,服务器应用程序可以使用结构化并发来一次处理数千或数百万个传入请求。

从本质上讲,虚拟线程提供了丰富的线程,结构化并发确保了它们的正确协调。JDK 中的结构化并发库为服务器端开发人员提供了可维护性和可靠性。

该提案不涉及替换 java.util.concurrent 中的并发构造或为 Java 提供明确的结构化并发 API。该提案也不打算添加在线程之间共享数据流的机制,尽管这可能会在未来得到解决。在当前提案下,现有的线程中断机制不会被新的线程取消机制取代,但这也可能在未来发生。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部