public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler);
corePoolSize:核心线程池线程数(一直工作的线程)
maximumPoolSize:线程池最多线程数
keepAliveTime:非核心线程存活时间
unit:非核心线程存活时间单位,配合keepAliveTime使用
workQueue:阻塞队列,任务接收后就会进入阻塞队列等待线程唤醒处理,不同的阻塞队列具有不同的作用,这里有三种阻塞队列
threadFactory:线程工厂
handler:任务拒绝策略
阻塞队列一共三种类型
ArrayQueue有界队列
LinkQueue无界队列
SynQueue同步队列
拒绝策略一共四种
AbortPolicy
为java线程池默认的阻塞策略,不执行此任务,而且直接抛出一个运行时异常
DiscardPolicy
直接抛弃,任务不执行,空方法
DiscardOldestPolicy
从队列里面抛弃head的一个任务,并再次execute 此task。
CallerRunsPolicy
在调用execute的线程里面执行此溢出的任务,会阻塞入口
线程池创建完成之后调用execute即可
任务线程继承Runnable接口,重写run方法即可