int corePoolSize:核心线程数 线程空闲时也不会被回收
int maximumPoolSize, 最大线程数
long keepAliveTime, 存活时间
TimeUnit unit, 活跃时间单位
BlockingQueue
ThreadFactory threadFactory, RejectedExecutionHandler handler: 拒绝策略 可以通过实现 RejectedExecutionHandler 来自定义拒绝策略
当线程数小于 corePoolSize时即使有空闲线程也会创建新线程;
当活跃线程数大于等于corePoolSize 等待队列没满时,则后记任务就直接放入等待队列;
当等待队列满了,小于maximumPoolSize时新建线程处理;
当大于maximumPoolSize则采用决绝策略拒绝,
JDK自带的拒绝策略:
(1) AbortPolicy 直接抛出RejectedExecutionException异常
(2) CallerRunsPolicy 由调用当前方法的线程执行,除非线程池关闭则丢弃任务
(3) DiscardPolicy 直接丢弃任务
(4) DisCardOldestPolicy 丢弃(discard)最前面的未处理的任务,尝试执行当前的任务直到线程池关闭