今天要聊一下线程池的知识,因为比较简单就先讲参数再花一下流程图
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler) ;
corePoolSize:核心线程数
maximumPoolSize:最大线程数
keepAliveTime:线程存活时间(默认针对核心线程以外的线程,但是可以开启对核心线程的过期时间)
TimeUnit:存活时间的单位
BlockingQueue:阻塞对列
ThreadFactory:线程工厂
RejectExecutionHandler:拒绝策略
流程图如上:
这里说一下拒绝策略; 首先我们肯定是可以自定义拒绝策略的。jdk也为我们提供了四种实现:
1,直接抛出异常
2,直接无视,不处理
3,从对列里取出最早的一个执行任务,继续执行流程动作
4,由当前调用的线程来处理