线程池知识回顾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()方法来确保线程的安全。

首先判断核心线程数,没有满测创建。  第二部 看看阻塞队列是否已满,没有添加。  第三步:看看线程池的最大线程数是否已满,没有满添加。  第四步:拒绝策略。

线程池的关闭:

 

posted @ 2022-04-04 20:47  Jerry&Ming  阅读(19)  评论(0)    收藏  举报