线程池七大核心参数如下:
1.corePoolSize核心线程数目-池中会保留的最多线程数。
2.maximumPoolSize最大线程数目-核心线程+救急线程的最大数目。
3.keepAliveTime生存时间-救急线程的生存时间,生存时间内没有新任务,此线程资源会释放。
4.unit时间单位-救急线程的生存时间单位,如秒、毫秒等。
5.workQueue-当没有空闲核心线程时,新来任务会加入到此队列排队,队列满会创建救急线程执行任务。
6.threadFactory线程工厂-可以定制线程对象的创建,例如设置线程名字、是否是守护线程等。
7.handler拒绝策略-当所有线程都在繁忙,workQueue也放满时,会触发拒绝策略
工作流程:
线程池内部是通过队列+线程实现的,当我们利⽤线程池执⾏任务时:
1.
如果此时线程池中的线程数量⼩于corePoolSize,即使线程池中的线程都处于空闲状态,也要创建
新的线程来处理被添加的任务。
2.
如果此时线程池中的线程数量等于corePoolSize,但是缓冲队列workQueue未满,那么任务被放⼊
缓冲队列。
3.
如果此时线程池中的线程数量⼤于等于corePoolSize,缓冲队列workQueue满,并且线程池中的数
量⼩于maximumPoolSize,建新的线程来处理被添加的任务。
4.
如果此时线程池中的线程数量⼤于corePoolSize,缓冲队列workQueue满,并且线程池中的数量等
于maximumPoolSize,那么通过 handler所指定的策略来处理此任务。
5.
当线程池中的线程数量⼤于 corePoolSize时,如果某线程空闲时间超过keepAliveTime,线程将被
终⽌。这样,线程池可以动态的调整池中的线程数