结构化并发:用StructuredTaskScope管理虚拟线程生命周期
基于JEP 428的结构化并发,在作用域内统一管理子任务失败与取消。 · 难度:入门 · +10XP
结构化并发:用StructuredTaskScope管理虚拟线程生命周期
结构化并发强制所有子任务在一个作用域内完成,避免线程泄漏和取消孤儿任务。本教程使用StructuredTaskScope的ShutdownOnFailure模式,当任意子任务失败时自动取消所有兄弟任务,并收集成功结果。演示如何替代CompletableFuture.allOf,在虚拟线程环境中实现优雅的错误传播与资源清理。
import java.util.concurrent.*;
public class StructuredDemo {
public static void main(String[] args) throws Exception {
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
Future<String> user = scope.fork(() -> fetchUser());
Future<Integer> score = scope.fork(() -> fetchScore());
scope.join();
scope.throwIfFailed();
System.out.println(user.resultNow() + ":" + score.resultNow());
}
}
}