ThreadPoolExecuter 参数分析 7 个 依次
ThreadPoolExecuter (int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue<Runnable> workQueue,
ThreadFactory threadFactory,
RejectedExecutionHandler handler )
corePoolSize :核心线程数,保持在线程池中的线程数量
maximumPoolSize:线程池允许最大线程数
keepAliveTime / timeUnit :线程池中线程空闲不被释放的最大时间,配合timeUnit使用,为0表示永远不被释放
workQueue :BlockingQueue<Runable> 工作线程任务的阻塞队列,用来存放等待执行的任务,默认实现LInkedBlockingQueue
thredFactory :线程池创建工厂,子类通过自定义实现接口“Thread newThread(Runnable)”通过工厂创建线程池具体的Thread线 程 默认实现了:DefaultThreadFactory
handler(RejectedExecutionHandler) : 拒绝策略
当workQueue无法存放新加任务,或添加新任务后线程池停止任务,使用设置的拒绝策略拒绝新加任务的执行,可以用rejectedExecution来实现自己的拒绝策略 默认策略 : AbortPolicy 抛出异常
拒绝策略:
1:CallerRunsPolicy :调用当前方执行策略
当前调用线程或添加任务的线程执行,这种方法当线程池无法执行时,使用调用方资源来执行任务
2:AbortPolicy : 异常策略
抛出RejectedExecutionException异常
3:DiscardPolicy :直接抛弃策略
对任务不做任何事情,忽略该任务,不执行不报错
4:DiscardOldestPolicy:抛弃最早任务策略
将workQueue的一个任务取出抛弃,当前任务放入workQueue中执行