public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
threadFactory, defaultHandler);
}
1.corePoolSize:核心池的大小;创建了线程池之后,默认情况下,线程池中没有线程,而是等待任务来了之后,创建线程执行任务,当线程的个数达到核心池大小后,后来的任务就会放在缓存队列中。
2.maximumPoolSize:线程池最大线程数,线程池所能容纳的线程。
3.keepAliveTime:多余的线程没有任务执行之后,线程在线程池中最多待多久的时间才销毁,直到只剩下corePoolSize个线程为止。
4.TimeUnit:参数keepAliveTime的时间单位,一共7种取值
TimeUnit.DAYS; //天
TimeUnit.HOURS; //小时
TimeUnit.MINUTES; //分钟
TimeUnit.SECONDS; //秒
TimeUnit.MILLISECONDS; //毫秒
TimeUnit.MICROSECONDS; //微妙
TimeUnit.NANOSECONDS; //纳秒
5.workQueue:一种阻塞队列,用来存储等待线程执行的任务。
6.threadFactory:用来创建线程的工厂
7.RejectedExecutionHandler:表示当线程池满以后,拒绝任务时采取的策略,一共四种策略,如下
ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionException异常。
ThreadPoolExecutor.DiscardPolicy:也是丢弃任务,但是不抛出异常。
ThreadPoolExecutor.DiscardOldestPolicy:丢弃队列最前面的任务,然后重新尝试执行任务(重复此过程)
ThreadPoolExecutor.CallerRunsPolicy:由调用线程处理该任务