CorePoolSize: 核心线程数。
MaximumPoolSize: 最大线程数。
WorkQueue: 工作队列。
流程
- 创建线程池后,等待提交过来的任务请求。
- 调用
execute()
方法添加一个请求任务。
- 如果正在运行的线程数量小于corePoolSize,那么马上创建线程执行这个任务。
- 如果正在运行的线程数量大于或等于corePoolSize,那么把这个任务放入工作队列。
- 如果这个时候队列满了,且正在运行的线程数量还小于maximumPoolSize,那么创建非核心线程立即运行这个任务。
- 如果队列满了,且正在运行的线程数大于或等于maximumPoolSize,那么启动饱和拒绝策略来执。
- 当一个线程完成任务时,它会从队列中取下一个任务来执行。
- 当一个线程无事可做超过一定时间(KeepAliveTime)时,线程池会判断:如果当前运行线程数大于corePoolSize,这个线程被停掉。
标签:队列,流程,maximumPoolSize,工作,任务,线程,corePoolSize,运行 From: https://www.cnblogs.com/-ori/p/16965714.html