lang
lang/java/concurrency/index.md
medium
lang-java-concurrency-index
Java 并发五件事 — 线程池怎么配 / 为什么禁 Executors 工厂 / CompletableFuture 编排 / 锁怎么选 / ThreadLocal 怎么清。Use when 建线程池 / 写异步编排 / 选锁 / 排查并发内存泄漏的 PR 时。
子项索引
| 子项 | 一句话 |
|---|---|
| thread-pool-config skill | ThreadPoolExecutor 七参数配置 — 核心/最大线程、有界队列、命名 ThreadFactory、拒绝策略,含 CPU/IO 密集线程数估算 |
| thread-pool-types skill | 禁用 Executors.newFixedThreadPool/newCachedThreadPool 工厂 — 无界队列或无界线程都会 OOM,必须手写 ThreadPoolExecutor |
| completablefuture skill | CompletableFuture 异步编排 — supplyAsync 必传自定义线程池、thenCompose vs thenCombine、exceptionally 兜异常 |
| lock-choice skill | 锁选型 — synchronized(简单互斥)vs ReentrantLock(要 tryLock/超时/可中断)vs ReadWriteLock(读多写少),且 Lock 必须 try-finally 里 unlock |
| threadlocal-cleanup skill | 线程池里用 ThreadLocal 必须在 finally 里 remove — 线程复用导致脏数据残留 + Entry key 弱引用造成 value 内存泄漏 |
Concurrency · 子项索引
并发拆成五个独立决策点,按你正在做的事下钻:
| 你在做什么 | 进哪个 |
|---|---|
| 要 new 一个线程池,纠结七个参数、拒绝策略、线程数、线程命名 | thread-pool-config |
想用 Executors.newFixedThreadPool / newCachedThreadPool 图省事 |
thread-pool-types |
| 用 CompletableFuture 做异步编排(supplyAsync / thenCompose / 异常) | completablefuture |
| 多线程共享可变状态,纠结用 synchronized 还是 Lock | lock-choice |
| 在线程池里用了 ThreadLocal,担心内存泄漏或脏数据 | threadlocal-cleanup |