Java中线程池的7种创建方式
Java中线程池的7种创建方式
Java中线程池的创建方式主要有以下7种,其中6种通过Executors
工厂类提供,1种通过ThreadPoolExecutor
手动配置:
-
newCachedThreadPool
- 特点:可缓存线程池,线程数无上限(Integer.MAX_VALUE),空闲线程默认存活60秒。适用于短时异步任务。1
- 创建方法:
Executors.newCachedThreadPool()
-
newFixedThreadPool
- 特点:固定线程数的线程池,超出的任务进入无界队列等待。适用于控制并发量。1
- 创建方法:
Executors.newFixedThreadPool(int nThreads)
-
newSingleThreadExecutor
- 特点:单线程池,保证任务按FIFO顺序执行。适用于需要顺序执行的任务。
-
newScheduledThreadPool
- 特点:支持定时或周期性任务执行的线程池。
-
newSingleThreadScheduledExecutor
- 特点:单线程版的定时任务线程池。
-
newWorkStealingPool (JDK 1.8+)
- 特点:基于工作窃取算法的线程池,任务执行顺序不确定。
-
ThreadPoolExecutor手动配置
- 特点:通过核心参数(核心线程数、最大线程数、存活时间、任务队列等)灵活定制线程池行为。
关键区别:
newCachedThreadPool
适合短时高频任务,而newFixedThreadPool
适合稳定负载场景。 2- 实际开发中推荐使用
ThreadPoolExecutor
手动创建,避免Executors
预设方法的潜在资源耗尽风险ThreadPoolExecutor参数配置