七个参数
- 核心线程数
- 核心线程会常驻线程池
- 最大线程数
- 如果同时执行的任务数超过了核心线程数,且队列已满,会创建新的线程来救急
- 总线程数(新线程+原有的核心线程)不超这个最大线程数
- 存活时间
- 超过核心线程数的线程一旦闲下来,会存活一段时间,然后被销毁
- 存活时间单位
- 工作队列
- 如果同时执行的任务数超过了核心线程数,会把暂时无法处理的任务放入此队列
- 线程工厂
- 可以控制池中线程的命名规则,是否是守护线程等(不太重要的参数)
- 拒绝策略,队列放满任务,且所有线程都被占用,再来新任务,就会有问题,此时有四种拒绝策略:
- AbortPolicy 报错策略,直接抛异常
- CallerRunsPolicy 推脱策略,线程池不执行任务,推脱给任务提交线程
- DiscardOldestPolicy 抛弃最老任务策略,把队列中最早的任务抛弃,新任务加入队列等待
- DiscardPolicy 抛弃策略,直接把新任务抛弃不执行