java如何提交线程池
创建线程池
使用 Executors 工厂类创建线程池,常见的线程池类型包括:
newFixedThreadPool(int nThreads):固定大小的线程池newCachedThreadPool():可缓存的线程池newSingleThreadExecutor():单线程的线程池newScheduledThreadPool(int corePoolSize):支持定时任务的线程池
示例代码:
ExecutorService executor = Executors.newFixedThreadPool(5);
提交任务到线程池
使用 execute() 或 submit() 方法提交任务到线程池:
execute(Runnable command):提交不需要返回值的任务submit(Callable<T> task):提交需要返回值的任务,返回Future对象
Runnable 示例:

executor.execute(() -> {
System.out.println("Running task");
});
Callable 示例:
Future<String> future = executor.submit(() -> {
return "Task result";
});
关闭线程池
完成任务提交后需要关闭线程池:

shutdown():平滑关闭,等待已提交任务完成shutdownNow():立即关闭,尝试中断正在执行的任务
示例代码:
executor.shutdown();
获取任务结果
对于 submit() 提交的 Callable 任务,可以通过 Future 获取结果:
try {
String result = future.get(); // 阻塞获取结果
System.out.println(result);
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
线程池配置参数
对于更精细的控制,可以直接使用 ThreadPoolExecutor 构造函数:
ThreadPoolExecutor executor = new ThreadPoolExecutor(
5, // 核心线程数
10, // 最大线程数
60L, // 空闲线程存活时间
TimeUnit.SECONDS, // 时间单位
new LinkedBlockingQueue<Runnable>() // 工作队列
);
注意事项
- 合理设置线程池大小,避免资源耗尽
- 正确处理任务抛出的异常
- 确保最终关闭线程池,避免资源泄漏
- 对于 I/O 密集型任务,可考虑更大的线程池
- 对于 CPU 密集型任务,线程数不宜过多






