线程池的原理解析

1 线程池的原理

1) 即当有任务过来时会先判断当前线程池里的线程数量是否小于核心线程数,如果小于就直接创建线程来执行当前任务,

2)当线程池里的线程数量等于核心线程数时新来的线程会进入到blockingqueue中,

3)当队列中的线程数量满了之后,会判断是否设置了最大线程数,如果设置了会再线程池里再次创建线程,直到数量等于最大线程数

4)如果创建了最大线程数量后,任务仍然执行不完,就会走这个拒绝策略机制
具体的策略机制有四种
默认的是abortpolicy—会直接抛出异常,rejectExectorException,不太友好。

常用的就是discardoldestpolicy,也就是会抛弃队列的头节点。
而callerrunpolicy,就是说如果线程池没有能力执行,会把他交于提交任务的线程来执行

线程池原理图

猜你喜欢

转载自blog.csdn.net/m0_37900506/article/details/114866532