本文共 1425 字,大约阅读时间需要 4 分钟。
1.ThreadPoolExecutor
继承了 AbstractExecutorService
ThreadPoolExecutor
中有四种构造方法. 本文章就简单的记录一下 public ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueuevar6, RejectedExecutionHandler var7) public ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueue 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(2)var6 (任务队列 最多等待任务数量)RejectedExecutionHandler var7 (拒绝策略,AbortPolicy //该策略是线程池的默认策略。使用该策略时,如果线程池队列满了丢掉这个任务并且抛出RejectedExecutionException异常DiscardPolicy //这个策略和AbortPolicy的slient版本,如果线程池队列满了,会直接丢掉这个任务并且不会有任何异常DiscardOldestPolicy //丢弃最老的。也就是说如果队列满了,会将最早进入队列的任务删掉腾出空间,再尝试加入队列,因为队列是队尾进,队头出,所以队头元素是最老的,因此每次都是移除对头元素后再尝试入队。CallerRunsPolicy //使用此策略,如果添加到线程池失败,那么主线程会自己去执行该任务,不会等待线程池中的线程去执行。就像是个急脾气的人,我等不到别人来做这件事就干脆自己干。)2`. ThreadPoolExecutor(int var1, int var2, long var3, TimeUnit var5, BlockingQueue var6,ThreadFactory var7, RejectedExecutionHandler var8);`ThreadFactory var7 (线程工厂,对线程信息的基础设置)
转载地址:http://netgn.baihongyu.com/