线程池在执行任务的时候,根据线程的数量,会分成不同的处理方式。如果任务没有饱和,则会新建任务。在饱和的时候,还会分出一种阈值情况的讨论。下面我们就线程池的执行流程进行讲解,同时就线程饱和的处理方法和流程中的图解为大家带来展示,帮助大家更好的理解整个线程池的流程。
1.线程池执行流程
任务被提交到线程池,会先判断当前线程数量是否小于corePoolSize。
(1)如果小于则创建线程来执行提交的任务,否则将任务放入workQueue队列;
(2)如果workQueue满了,则判断当前线程数量是否小于maximumPoolSize;
(3)如果小于则创建线程执行任务,否则就会调用handler,以表示线程池拒绝接收任务。
2.线程池饱和策略
AbortPolicy:直接抛出一个异常,默认策略
DiscardPolicy: 直接丢弃任务
DiscardOldestPolicy:抛弃下一个将要被执行的任务(最旧任务)
CallerRunsPolicy:主线程中执行任务
流程角度图解
结构角度图解
原文来自:https://www.py.cn
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容