ThreadPoolExecutor 简介
ThreadPoolExecutor 是 java.util.concurrent 包下的一个类,在jdk1.5版本引入,帮助开发人员管理线程并方便地执行并行任务。
通俗来说,ThreadPoolExecutor 的作用是生产和管理线程池的,可以通过调用其 execute 方法和 submit 方法执行多线程任务。
ThreadPoolExecutor 使用
创建执行器
ExecutorService 对象和 ThreadPoolExecutor 的关系如下图:
ExecutorServiceConfig:
package com.ramble.threadpool.config;import java.util.concurrent.*; public class ExecutorServiceConfig { /** * 定义一个并发任务执行器服务 */ private static ExecutorService executorService; /** * 在类加载的时候初始化并发任务执行器 */ static { init(); } /** * 防止类属性被篡改 */ private ExecutorServiceConfig() { } /** * 初始化并发任务执行器。核心线程数量:设置为2,初始创建的线程池大小;最大线程数量:设置为3;空闲线程存活时间:设置为3秒,当非核心线程执行完任务之后,若没有新的任务分派,存活多久后自动销毁;任务队列:设置为2,当线程池创建的线程数量达到最大线程数量后,新进来的任务会排队等候; * 拒绝策略:设置为直接抛异常 * <p> * 以上配置需要根据:实际的业务场景、项目实际情况、实际硬件情况等各种因素综合考量 */ private static void init() { executorService = new ThreadPoolExecutor(2, 3, 3, TimeUnit.SECONDS, new LinkedBlockingDeque<Runnable>(2), new ThreadPoolExecutor.AbortPolicy()); } /** * 获取默认并发任务执行器 * * @return */ public static ExecutorService getDefaultExecutor() { return executorService; } /** * 获取固定大小并发任务执行器 * * @return */ public static ExecutorService getFixedExecutor() { return Executors.newFixedThre