线程池知识回顾02
1、线程池的分类:

2、线程池与线程的生命周期:
线程开始:新生状态----就绪状态----运行状态(执行代码)----------阻塞状态--------结束状态
线程池只有两个状态: 运行状态---死亡状态。中间有一系列的回收状态。

shutDowmNow 与shutDowm的区别。
3
4、创建线程池几乎都是通过ThreadPoorExecutor创建,里面有五个参数,那么这五个参数的作用是什么呢?

参数说明
▪ corePoolSize:核心线程池的大小
▪ maximumPoolSize:线程池能创建线程的最大个数
▪ keepAliveTime:空闲线程存活时间 创建新的线程销毁的时间
▪ unit:时间单位,为keepAliveTime指定时间单位
▪ workQueue:阻塞队列,用于保存任务的阻塞队列 省去了wait和notify 等过juc下的阻塞队列控制
▪ threadFactory:创建线程的工程类
▪ handler:饱和策略(拒绝策略)
5、阻塞队列分类:

6、线程池execute的执行过程

通过源码我们可以看到分为三部:

此处我们看到了一个ctl,就是原子操作类,多线程的情况下,num++是不是原子性的,所以使用 AtomicInteger.incrementAndGet()方法来确保线程的安全。
首先判断核心线程数,没有满测创建。 第二部 看看阻塞队列是否已满,没有添加。 第三步:看看线程池的最大线程数是否已满,没有满添加。 第四步:拒绝策略。
线程池的关闭:

本文来自博客园,作者:Jerry&Ming,转载请注明原文链接:https://www.cnblogs.com/jerry-ming/articles/16100134.html

浙公网安备 33010602011771号