参考的资料:《码》P237-P249
线程池参数说明
值得参考的例子:https://blog.csdn.net/weixin_42061605/article/details/106885130
线程池的本质就是生产者消费者模型,举一个生活中的例子来进行描述,假设我们整个过程模拟成工厂里的一道工序,整个过程类比一下:
核心线程数corePoolSize 该部门的正式员工
最大线程数maximumPoolSize 该团队的最大人数限制,就相当于工位吧, 大于核心线程数的那部分理解为允许的临时工数量
最大闲置时间keepAliveTime 临时工的闲置时间(木有工作任务的时间,超出后会被释放)
时间单位TimeUnit 对应上一个参数的单位
任务队列workQueue 就相当于我们的待加工产品
线程工厂threadFactory 部门boss用来招员工的入口(自定义就可以给每一个线程加上名字,便于追溯)
拒绝策略handler 部门老大说 俺们这儿扛不住了,不要再来任务了!!!(主线程来执行这部分的代码)
调用线程池的这个线程就是对应的主线程
线程池的线程回收
线程回收有几种方式:
1.当线程池有空闲的线程,且超过了最大闲置时间,可以对空余的线程进行回收处理。
2.关闭线程池,关闭之后不会执行新任务,但是会把旧任务执行完毕
shutdown
shutdown属于线程池的一种状态,表示此状态不再接受新任务,但可以继续执行队列中的任务。