1. 线程
1. 线程状态
线程状态分为5种
new
runable -> 分为 ready 和 running
阻塞
等待 -> 分为waiting 和 time_waiting
销毁
1.2 线程数量配置
IO密集型 = CPU * 2
cpu密集型 = CPU + 1
2. 线程池
2.1 线程池核心参数
线程池一共7个核心参数,分别是核心线程数、最大线程数、存活时间、时间单位、线程工厂、拒绝策略和阻塞队列
2.2 线程池任务流程
当线程池接收一个任务后,首先判断当前线程状态, 只有处于running 时,才会接收新任务
否则抛弃,然后判断线程数是否小于核心线程数,小于创建线程并执行,否则判断阻塞队列是否满了,
没满添加,满了则判断线程数是否小于最大线程数,小于新建线程执行任务,大于等于执行拒绝策略
2.3 拒绝策略
直接抛异常 about
直接丢弃 discard
丢弃老任务 disOldCard
交由调用者处理 callRuns
自定义策略,没定义过
2.4 线程池状态
线程池的状态是由 ThreadPoolExeator 中的ctl 进行维护的,它的高三位是线程状态,低29位是工作线程数
线程一共5种状态,running、shutdown、stop、tidying 和销毁
running 接受新任务,执行队列任务
shutdown 不接受新任务,执行队列任务
stop 不接受新任务,不执行队列任务, 中断当前任务
tidying 有效线程数为0
最后销毁
标签:状态,执行,队列,running,任务,线程,多线程
From: https://www.cnblogs.com/antordragon/p/18353848