自定义创建线程池
/*
int corePoolSize, 核心线程数
int maximumPoolSize, 最大线程数量
long keepAliveTime, 空闲线程最大空闲时间
TimeUnit unit, 时间单位
BlockingQueue<Runnable> workQueue, 阻塞队列作为workQueue参数,用于存储待执行的任务
ThreadFactory threadFactory, 创建线程的工厂类,
可以自定义工厂类,需要实现ThreadFactory接口,并重写newThread方法
RejectedExecutionHandler handler 拒绝策略,常见的策略有
ThreadPoolExecutor.AbortPolicy(默认策略,抛出RejectedExecutionException异常)
ThreadPoolExecutor.CallerRunsPolicy(由调用线程直接执行被拒绝任务)
ThreadPoolExecutor.DiscardPolicy(丢弃被拒绝的任务)
ThreadPoolExecutor.DiscardOldestPolicy(丢弃队列中最旧的任务,然后尝试重新提交被拒绝的任务)
*/
ThreadPoolExecutor pool = new ThreadPoolExecutor(
3,
6,
1,
TimeUnit.MINUTES,
new ArrayBlockingQueue<>(6),
Executors.defaultThreadFactory(),
new ThreadPoolExecutor.AbortPolicy());
Executors工具类创建线程池
// 创建int最大值数量的线程池(无上线)
ExecutorService pool = Executors.newCachedThreadPool();
// 创建指定线程的线程池
ExecutorService pool2 = Executors.newFixedThreadPool(3);
// 获取线程数量
int count = Runtime.getRuntime().availableProcessors();