核心参数:
corePollSize:核心线程池的大小
maximumPollSize:线程池能创建线程的最大个数
keepAliveTime:空闲线程存活时间
unit:时间单位,为keepAliveTime指定时间单位
workQueque:阻塞队列,用于保存任务的阻塞队列
threadFactory:创建线程的工厂类
handler:饱和策略(拒绝策略)
过程:
当我们获取线程池中的线程执行任务时
线程池会先判断核心线程池是否已满?添加到阻塞队列等待:在核心队列中创建线程提供给我们执行任务
然后判断阻塞队列是否已满?从非核心线程池创建线程:任务存储在队列中等待执行
最后判断非核心线程池是否已满?按饱和策略处理:在非核心线程池里创建线程执行任务
拒绝策略:
1. 丢弃任务,抛出异常;系统默认的拒绝策略
2. 丢弃任务,不抛异常;会数据丢失
3. 丢弃最前面的任务,然后重试失败再丢弃最前面的任务,不抛异常
4. 回退任务,不抛异常,调用者可手动去执行