🧊 前沿科技知识库
全部 / 软件工程

并发与并行(Concurrency and Parallelism)

2026-09-26 · 软件工程
最后更新:2026-09-26 | 领域:软件工程 | 说明:信息来源为公开网络资料,详见文末参考来源

概述

并发(concurrency)指多个任务在时间上重叠推进,并行(parallelism)指多个任务在同一时刻真正同时执行。并发模型讨论的是「如何组织任务、如何共享状态、如何取消与传播错误」;并行则关心如何把工作切分到多核与多机上。

主流实现路线可分为几类:共享内存 + 线程/锁(Java、C++)、异步任务 + 事件循环(Rust async、JavaScript、Python asyncio)、协程(Go goroutine、Kotlin coroutines)、Actor 消息传递(Erlang/OTP、Akka/Pekko)、CSP 通道(Go channel)。2025–2026 年的主要变化是:结构化并发从语言实验走向标准化,虚拟线程/无栈协程大规摸进入生产,运行时(GC、调度器)也在为并发吞吐做专门优化。

最新进展(2025–2026)

1. Java 结构化并发接近定稿。 JEP 525「Structured Concurrency (Sixth Preview)」的目标是简化并发编程:把一组运行在不同线程上的相关任务视为单个工作单元,从而简化错误处理与取消、提升可靠性与可观测性(JEP 525: Structured Concurrency (Sixth Preview))。该特性先在 JDK 19(JEP 428)、JDK 20(JEP 437)孵化,此后以预览形式迭代(openjdk.org/jeps/525)。其 API 形态为 StructuredTaskScope.open(...) 配合 scope.fork(...) 与 scope.join(),使用方式接近同步代码(结构化并发(JEP 525)终定稿!Java 26高并发代码)。

2. 虚拟线程与结构化并发的定位被明确区分。 按 JEP 444 的表述:虚拟线程提供「充裕的线程」,结构化并发则「正确地、稳健地协调」这些线程;二者互补而非竞争——虚拟线程消除了线程的成本,结构化并发消除了线程的风险(Structured Concurrency: Why It Matters More Than Virtual Threads for Correctness)。在 API 选择上,扇出聚合(fan-out/collect)与「首个成功即返回」(hedging/racing)更适合用 StructuredTaskScope 与 Joiner,而无阻塞的异步流水线仍适合 CompletableFuture(Structured Concurrency in Java: Why It's Better Than CompletableFuture)。

3. Go 1.26 默认启用新 GC 并改进并发相关开销。 Go 1.26 将此前在 1.25 中作为实验的 Green Tea 垃圾回收器默认启用,其设计通过更好的局部性与 CPU 可扩展性改善小对象的标记与扫描,官方预期在大量使用 GC 的真实程序中减少约 10%–40% 的 GC 开销(Go 1.26 Release Notes)。同时,cgo 的基线开销降低约 30%,编译器在更多情形下可把切片的底层存储分配在栈上(Go 1.26 is released)。后续版本的公开博客索引显示 Go 1.27 将加入泛型方法、encoding/json/v2、更快的内存分配与 goroutine 泄漏剖析(goroutine leak profiles)等(Blog Index)。

4. Python 无 GIL 构建正式受支持。 自 3.13 起 CPython 提供禁用全局解释器锁(GIL)的 free-threading 构建,使线程可在多核上真正并行;并非所有软件都能自动获益,但按线程化思路设计的程序在多核硬件上会更快(Python support for free threading)。Python 3.14 的发行说明列出 PEP 779——free-threaded Python 正式受支持(What's new in Python 3.14)。此外,官方 macOS 与 Windows 二进制发行版现已包含实验性 JIT,可通过 PYTHON_JIT=1 测试,但官方不建议在生产中使用(Python 3.14 有什么新变化)。

5. Actor 模型路线继续获得工程验证。 Akka 侧发布的案例称其用 AI 迁移了 65 个开源项目,并强调单写者实体(single-writer entity)的价值:每个实体单线程处理、消息有序、请求间无共享可变状态,因而无需 asyncio.Lock、互斥量与「check-then-act」防御式判断(We Ported 65 OSS Projects With AI)。

核心技术与关键概念

代表性项目 / 公司 / 产品(附官方链接)

项目 / 平台模型链接
OpenJDK Structured Concurrency(JEP 525)结构化并发(预览)openjdk.org/jeps/525
Java Virtual Threads(Project Loom)虚拟线程techoral.com
Go runtimegoroutine、Green Tea GCgo.dev
CPython free-threading无 GIL 多线程docs.python.org
TokioRust 异步运行时、工作窃取tokio.rs
Erlang/OTP / ElixirBEAM 抢占式调度、Actorcodowl.com
Akka / Apache PekkoJVM Actor 模型tms-outsource.com

关键数据与评测结果(附来源)

趋势与争议

参考来源

  1. JEP 525: Structured Concurrency (Sixth Preview)
  2. Structured Concurrency: Why It Matters More Than Virtual Threads for Correctness
  3. Structured Concurrency in Java: Why It's Better Than CompletableFuture — and What It Still Can't Do
  4. 结构化并发(JEP 525)终定稿!Java 26高并发代码,再也不写线程池地狱
  5. Java Virtual Threads Deep Dive: Project Loom in Production (2026)
  6. Go 1.26 Release Notes
  7. Go 1.26 is released
  8. Go Blog Index
  9. Go — Garbage collector (src/runtime/mgc.go)
  10. Go Release History
  11. Python support for free threading
  12. What's new in Python 3.14
  13. Python 3.14 有什么新变化
  14. C API Extension Support for Free Threading
  15. Tokio - An asynchronous Rust runtime
  16. Tokio — Select(取消语义)
  17. Tokio 中文文档
  18. What is Tokio?
  19. Why Developers Are Turning to Elixir for Scalable Apps
  20. What Is Reactive Architecture and Why It Matters
  21. We Ported 65 OSS Projects With AI
  22. Actor模型在分布式并发系统中的原理剖析、优势及在Akka框架中的实践应用
← 云原生与 Kubernetes系统编程语言:C/C++ 与 Zig、Carbon 等 →