首页 > 编程语言 > 详细

Java线程池的工作流程

时间:2021-05-23 14:45:53      阅读:17      评论:0      收藏:0      [点我收藏+]

技术分享图片

线程池刚被创建的时候,只是向系统里申请一个用于执行流程队列和管理线程池的线程资源。在调用execute()添加一个任务时,线程池会按照以下流程执行:

1、如果正在运行的线程数少于corePoolSize(用户定义的核心线程数),线程池就会立刻创建线程并执行该线程任务;

2、如果正在运行的线程数大于corePoolSize,该任务就会被放入阻塞队列中;

3、如果阻塞队列已满且正在运行的线程数少于maximumPoolSize时,线程池会创建非核心线程立刻执行该线程任务;

4、在阻塞队列已满并且正在运行的线程数大于maximunPoolSize时,线程池将会拒绝执行该任务并且抛出拒绝异常RejectExecutionException;

5、在线程执行完毕后,该任务会从线程队列中移除,然后从队列中取下一个任务继续执行;

6、在线程处于空闲的时间超过keepAliveTime,并且正在运行的线程数大于corePoolSize, 该线程将会被认为是空闲线程并停止;所以线程任务都执行完毕后,线程池会收缩到corePoolSize大小。

Java线程池的工作流程

原文:https://www.cnblogs.com/code00000001/p/14800688.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!