ThreadPoolExecutor的一种构造方法
参数: corePoolSize (最大核心线程数)
参数: maximumPoolSize (最大线程数)
参数: keepAliveTime (允许非核心线程的最大空闲时间,如过当前线程数超过最大核心线程数且某些空闲线程的空闲时间超过允许的最大空闲时间则会被销毁)
参数: unit (空闲时间的单位)
参数: workQueue (手动给线程池传入一个任务队列,如果不传入,则内不会创建一个任务队列)
参数: threadFactory (描述了线程是如何创建的.工厂对象就负责创建线程,可以手动设定创建线程的策略)
参数: handler (拒绝策略)
线程池的执行流程
Java标准库中自带的拒绝策略
①: 中止策略,线程池会抛出异常并中止执行此任务
举个栗子: 当领导给一个员工安排任务时,此时员工手中的工作已经做不过来了,员工就会崩溃,罢工开摆!
②: 把任务交给添加此任务的线程来执行
举个栗子: 当领导给员工安排任务时,员工说: 我做不过来了.你自己来做吧! 如果这项工作领导能够做就正常执行,如果做不了这项任务就会被丢弃!
③: 忽略最早加入队列的任务
举个栗子:当领导给一个已经有三个任务(任务1,任务2,任务3)在手的员工再安排一个任务4时候, 这个员工就会丢弃任务1,来执行任务4
④: 忽略最新加入的任务
举个栗子:当领导给一个已经有三个任务(任务1,任务2,任务3)在手的员工再安排一个任务4时候, 这个员工就会丢弃任务4,继续按照原来的进度执行