一、七大参数
ThreadPoolExecutor(core, max, keepAlive, unit, queue, threadFactory, handler):
| 参数 | 含义 |
|---|---|
| corePoolSize | 核心线程数 |
| maximumPoolSize | 最大线程数 |
| keepAliveTime | 空闲线程回收时间 |
| workQueue | 任务队列(用有界!) |
| handler | 拒绝策略 |
二、提交流程
核心满 → 入队列 → 队列满 → 开到最大线程 → 仍满 → 拒绝。拒绝策略:Abort(抛异常)/CallerRuns(调用者跑)/DiscardOldest/Discard。
三、Executors 的坑
newFixedThreadPool/newSingleThread:无界 LinkedBlockingQueue,任务堆积 OOM;newCachedThreadPool:最大线程 Integer.MAX_VALUE,线程爆炸;- 生产务必手动 new ThreadPoolExecutor + 有界队列 + 合理拒绝策略。
四、参数经验
CPU 密集:core ≈ 核数;IO 密集:core 可放大(如 2×核数)。异常处理:submit 吞异常,用 execute 或 Future.get() 或重写 afterExecute 捕获。