Concurrency 高级

将并发任务的生命周期作为单个工作单元管理。

✕ Java 8
ExecutorService exec =
    Executors.newFixedThreadPool(2);
Future<User> u = exec.submit(this::fetchUser);
Future<Order> o = exec.submit(this::fetchOrder);
try {
    return combine(u.get(), o.get());
} finally { exec.shutdown(); }
✓ Java 25 (Preview)
try (var scope = new StructuredTaskScope
        .ShutdownOnFailure()) {
    var u = scope.fork(this::fetchUser);
    var o = scope.fork(this::fetchOrder);
    scope.join().throwIfFailed();
    return combine(u.get(), o.get());
}
发现此代码有问题? 告诉我们。
🛡️

无线程泄漏

所有分支任务在作用域关闭前完成。

🔗

错误传播

任何任务失败时取消其他任务。

📖

可读结构

并发边界在代码结构中清晰可见。

旧方式
手动线程生命周期管理
现代方式
StructuredTaskScope
自 JDK
25
难度
高级
结构化并发
预览

JDK 25 预览版(第五次预览,JEP 505)。需要 --enable-preview。

结构化并发将一组并发任务视为一个操作。如果任何任务失败,其他任务会被取消。所有分支任务在作用域关闭前完成。

分享 𝕏 🦋 in