public ThreadPoolExecutor(int corePoolSize, // 核心线程数
int maximumPoolSize, // 最大线程数
long keepAliveTime, // 空闲线程存活时间
TimeUnit unit, // 时间单位
BlockingQueue<Runnable> workQueue, // 阻塞队列
ThreadFactory threadFactory, // 线程工厂
RejectedExecutionHandler handler) // 拒绝策略
红色为常用的阻塞队列
缓存线程池,线程池的数量不固定,可以根据需求自动的更改数量,可以进行自动线程回收
public static ExecutorService newCachedThreadPool() {
return new ThreadPoolExecutor(
0, // 核心线程数:0
Integer.MAX_VALUE, // 最大线程数:Integer.MAX_VALUE
60L, // 空闲线程存活时间:60s
TimeUnit.SECONDS, //单位:秒
new SynchronousQueue<Runnable>() // 阻塞队列:SynchronousQueue
);
}
创建固定大小的线程池
public static ExecutorService newFixedThreadPool(int nThreads) {
return new ThreadPoolExecutor(
nThreads, // 核心线程数:自定义数量
nThreads, // 最大线程数:自定义数量
0L, // 空闲线程存活时间:0
TimeUnit.MILLISECONDS, //单位:毫秒
new LinkedBlockingQueue<Runnable>() // 阻塞队列:LinkedBlockingQueue
);
}
线程池中只有一个线程
public static ExecutorService newSingleThreadExecutor() {
return new Executors.FinalizableDelegatedExecutorService(
new ThreadPoolExecutor(
1, // 核心线程数:1
1, // 最大线程数:1
0L, // 空闲线程存活时间:0
TimeUnit.MILLISECONDS, //单位:毫秒
new LinkedBlockingQueue<Runnable>() // 阻塞队列:LinkedBlockingQueue
)
);
}
ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler
)