可以按自己的需求来自定义线程池工具类
public class ThreadPool {
private static ThreadPoolExecutor coreThreadPool = new ThreadPoolExecutor(
5, //核心线程数
10, //线程池中的最大线程数量
20, //空闲时间(核心线程数以外的空闲线程会被计时,当达到空闲时长的时候会被销毁)
TimeUnit.SECONDS, //空闲时间单位
new LinkedBlockingDeque<>(10), //任务等待队列(当线程池中的线程全被占用的时候会进入到该队列中等待)
Executors.defaultThreadFactory(), //线程的船舰方式
new ThreadPoolExecutor.AbortPolicy() //拒绝策略
);
private static ThreadPoolExecutor noCoreThreadPool = new ThreadPoolExecutor(
5,
8,
20,
TimeUnit.SECONDS,
new LinkedBlockingDeque<>(6),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy()
);
public static ThreadPoolExecutor getCoreThreadPool() {
return coreThreadPool;
}
public static ThreadPoolExecutor getNoCoreThreadPool() {
return noCoreThreadPool;
}
}