如何创建java线程池
创建Java线程池的方法
Java中可以通过java.util.concurrent.Executors工具类或直接实例化ThreadPoolExecutor来创建线程池。以下是几种常见方式:
使用Executors工厂方法
Executors提供了一些预定义的线程池配置,适合快速使用:
// 固定线程数的线程池
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(5);
// 单线程线程池(保证任务顺序执行)
ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
// 可缓存的线程池(适合短时异步任务)
ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
// 支持定时/周期任务的线程池
ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(3);
自定义ThreadPoolExecutor
如需更精细控制线程池参数,可直接实例化ThreadPoolExecutor:

int corePoolSize = 5;
int maxPoolSize = 10;
long keepAliveTime = 60L;
TimeUnit unit = TimeUnit.SECONDS;
BlockingQueue<Runnable> workQueue = new LinkedBlockingQueue<>(100);
ThreadPoolExecutor executor = new ThreadPoolExecutor(
corePoolSize,
maxPoolSize,
keepAliveTime,
unit,
workQueue,
new ThreadPoolExecutor.CallerRunsPolicy()
);
参数说明
corePoolSize:核心线程数,即使空闲也不会被回收maximumPoolSize:最大线程数限制keepAliveTime:非核心线程空闲存活时间workQueue:任务队列(常用LinkedBlockingQueue或ArrayBlockingQueue)handler:拒绝策略(如AbortPolicy、CallerRunsPolicy等)
使用示例
executor.execute(() -> {
System.out.println("Task executed by " + Thread.currentThread().getName());
});
// 优雅关闭
executor.shutdown();
注意事项
- 避免使用无界队列(可能导致OOM)
- 根据任务类型选择合适的线程池类型
- 生产环境建议自定义
ThreadPoolExecutor而非使用Executors - 注意处理未捕获异常(可通过
ThreadFactory设置UncaughtExceptionHandler)






