6. threadFactory:表示生成线程池中工作线程的线程工厂 , 用于创建线程一般用默认的即可 。
7. handler:拒绝策略 , 表示当队列满了并且工作线程大于等于线程池的最大线程数 。
四、线程池的底层工作原理- 主要处理流程图(来源百度)
- 底层工作原理图(来源尚硅谷阳哥)
- 流程梳理
1. 在创建了线程池后 , 等待提交过来的任务请求 。
2. 当调用execute()方法添加一个请求任务时 , 线程池会做如下判断:
2.1 如果正在运行的线程数量小于corePoolSize , 那么马上创建线程运行这个任务;
2.2 如果正在运行的线程数量大于或等于corePoolSize , 那么将这个任务放入队列;
2.3 如果这时候队列满了且正在运行的线程数量还小于maximumPoolSize , 那么还是要创建非核心线程立刻运行这个任务;
2.4 如果队列满了且正在运行的线程数量大于或等于maximumPoolSize , 那么线程池会启动饱和拒绝策略来执行 。
3.当一个线程完成任务时 , 它会从队列中取下一个任务来执行 。
4.当一个线程无事可做超过一定的时间(keepAliveTime)时 , 线程池会判断:
如果当前运行的线程数大于corePoolSize , 那么这个线程就被停掉;所以线程池的所有任务完成后它最终会收缩到corePoolSize 的大小 。
五、总结【东南亚|Java面试必问之线程池的创建使用、线程池的核心参数、线程池的底层工作原理】这样就理解很透彻了 , 我也为大家汇总了一套2022Java面试题 , 需要的小伙伴私信【面试】呀
- Java|餐饮管理系统源码JAVA
- 阿里回应旗下东南亚电商Lazada将被剥离?阿里不予回应
- 北美市场|MLBB走出东南亚
- L阿里巴巴拟剥离东南亚电商Lazada,曾尝试融资10亿美元
- 东南亚|中国电商市场三足鼎立:淘宝手握51%的市场占比,但未来难以预料!
- Java|三星S22 Ultra海外卖爆,iPhone 13羡慕吗?
- 阿里回应旗下东南亚电商Lazada将被剥离:不公开回应此事
- meta|Java集合面试题看这篇就够了
- javascript|JavaScript设置页面元素的滚动条一直最下方
- Java|Java全栈学习路线、学习资源和面试题一条龙