Concurrency 入门

使用 try-with-resources 实现执行器的自动关闭。

✕ Java 8
ExecutorService exec =
    Executors.newCachedThreadPool();
try {
    exec.submit(task);
} finally {
    exec.shutdown();
    exec.awaitTermination(
        1, TimeUnit.MINUTES);
}
✓ Java 19+
try (var exec =
        Executors.newCachedThreadPool()) {
    exec.submit(task);
}
// auto shutdown + await on close
发现此代码有问题? 告诉我们。
🧹

自动清理

当代码块退出时自动关闭。

🛡️

不会泄漏线程

即使抛出异常,执行器也会正确关闭。

📏

更少样板代码

无需手动 try/finally 来调用 shutdown()。

旧方式
手动关闭
现代方式
try-with-resources
自 JDK
19
难度
入门
ExecutorService 自动关闭
可用

自 JDK 19 起广泛可用(2022 年 9 月)

自 Java 19 起,ExecutorService 实现了 AutoCloseable。close() 方法会等待所有任务完成,然后关闭执行器——无需手动 shutdown() 和 awaitTermination()。

分享 𝕏 🦋 in