ThreadPoolExecutor 的参数说明
1.ThreadPoolExecutor
继承了 AbstractExecutorService
ThreadPoolExecutor
中有四种构造方法.
本文章就简单的记录一下
public ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueue<Runnable> var6, RejectedExecutionHandler var7)
public ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueue<Runnable> var6, ThreadFactory var7, RejectedExecutionHandler var8)
1.ThreadPoolExecutor(int var1,int var2,long var3,TimeUnit var5,BlockingQueue<Runnable> var6);
int var1 核心线程数 (任务数如果小于核心线程数,首先创建核心线程进行执行操作)
int var2 最大线程数(任务数如果大于核心线程数 小于最大线程数,没有超过核心线程数+任务队列,则创建所有核心线程数执行任务,多的任务在任务队列等待)
long var3 (线程空闲时间)
TimeUnit var5 (线程空闲时间的单位,
TimeUnit.DAYS //天
TimeUnit.HOURS //小时
TimeUnit.MINUTES //分钟
TimeUnit.SECONDS //秒
TimeUnit.MILLISECONDS //毫秒)
BlockingQueue<Runnable>(2)var6 (任务队列 最多等待任务数量)
RejectedExecutionHandler var7 (拒绝策略,
AbortPolicy //该策略是线程池的默认策略。使用该策略时,如果线程池队列满了丢掉这个任务并且抛出RejectedExecutionException异常
DiscardPolicy //这个策略和AbortPolicy的slient版本,如果线程池队列满了,会直接丢掉这个任务并且不会有任何异常
DiscardOldestPolicy //丢弃最老的。也就是说如果队列满了,会将最早进入队列的任务删掉腾出空间,再尝试加入队列,因为队列是队尾进,队头出,所以队头元素是最老的,因此每次都是移除对头元素后再尝试入队。
CallerRunsPolicy //使用此策略,如果添加到线程池失败,那么主线程会自己去执行该任务,不会等待线程池中的线程去执行。就像是个急脾气的人,我等不到别人来做这件事就干脆自己干。)
2`. ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueue<Runnable> var6,ThreadFactory var7, RejectedExecutionHandler var8);`
ThreadFactory var7 (线程工厂,对线程信息的基础设置)