# Java 并发与资源生命周期检查清单

## 线程安全与可见性

- 共享可变状态是否在无同步或错误同步下被多线程访问；`volatile` 是否误用于复合操作。
- 单例或缓存是否为双重检查锁定等模式正确发布；`static` 可变集合是否被并发修改。
- `synchronized` / `ReentrantLock` 临界区是否过大、是否存在锁顺序反转导致死锁的路径。

## 异步与执行器

- `ExecutorService`、`ScheduledExecutorService` 是否在应用生命周期内正确关闭，避免线程泄漏。
- `CompletableFuture` 链是否指定合适执行器，避免在公共线程池上阻塞 I/O。
- 异步回调中是否误用已结束的请求上下文（如已关闭的 `HttpServletRequest` 属性）。

## 事务与边界（仅在 diff 可见时判断）

- 长耗时或外部 I/O 是否被包在事务边界内导致连接占用过长（仅当代码明确呈现事务注解或模板用法时指出）。
- 同类内自调用是否绕过代理导致事务失效（仅当 diff 能体现该结构时指出）。

## 资源关闭

- `InputStream` / `OutputStream` / `Connection` / `Statement` 等是否在异常路径上关闭；优先检查 `try-with-resources` 是否覆盖所有出口。
- 实现 `AutoCloseable` 的客户端是否在 `finally` 或 try-with-resources 中关闭。

## 可观测性

- 并发失败路径是否保留可关联的 trace/request id（不泄露敏感载荷）。
