问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Spring线程池ThreadPoolTaskExecutor学习总结

发布网友 发布时间:2023-02-12 05:00

我来回答

1个回答

热心网友 时间:2024-12-05 20:19

1.ThreadPoolTaskExecutor的基本参数:因为它是基于ThreadPoolExecutor来实现的,我们可以参考ThreadPoolExecutor的构造函数

2.线程池的执行流程:当提前任务到当前线程池时,先判断当前线程池中线程数量是否小于corePoolSize,如果小于创建新的线程处理请求,不管当前有没有线程闲置;如果大于等于,则将线程想放入阻塞队列workQueue中,线程池中存在空闲的线程后会去处理workQueue中任务;如果workQueue也满了,则会新建工作线程处理任务,当线程池中的线程大于最大线程数maxPoolSize时,则会用选定的拒绝策略来处理新的线程

下面是源码部分(使用execute()方法):
注意:ThreadPoolTaskExecutor中execute()有重载方法,但最后都是调用同一方法,处理逻辑相同

从上看出其实线程池执行任务的主要方法是addWorker()方法,execute()方法只是将任务提交以及做一些判断,我们看一下addWorker()方法:

上面源码中调用start()方法启动线程,其实是调用Worker中run()方法来启动,因为Worker实现实现了Runnable接口,如下

调用Worker的run()方法,从图中可以看出本质执行的方法是runWorker()方法,源码如下:

源码执行流程图如下:
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
家政服务阿姨是做什么的? 中央空调水滴图标是什么模式? 和EXO有关(字)的头像3张, 真的没人要么 exo这几个字母头像组合的头像 有没有EX0成员穿有EXO字的衣服的图片,和我头像一样的,越多越好! 为什么工商办卡要证明 亲子阅读的优缺点是什么? 馒头冬天放在室外存放 宝宝2 岁半说话结巴,宝宝结巴怎么纠正? 宝宝讲话口齿不清怎么办 ThreadPoolExcutor线程池 康乐小豆冰棍含牛奶吗 康乐小豆雪糕外地能买吗 qq怎么查看自己的直播记录 台湾特色小吃新竹贡丸 恋爱两个月纪念日送花寄语 陈姓男孩取什么名字 陈志坚约拼音是怎么拼写的 沃尔沃车跑107公里路程油钱多少 沃尔沃s40的具体油耗是合人民币多少钱? 沃尔沃s40费油啥原因? 沃尔沃S40油耗高吗?听听车主们的真实感受 这世界那么多人是什么意思 广东省广州市海珠区广州大道南上冲西约南十二巷邮编是什么? 广州上冲南洲街道南约西是什么社区 医用口罩当成普通口罩卖可以吗 什么软件秒玩迷你世界 南昌奢选陈辰是真的吗 普通当兵两年给多少钱去当兵需要花费多少钱? 大学生当兵两年给多少钱? ...多线程并行计算通过向线程池ThreadPoolExecutor提交任务的实现方法... 拜字迷:得一想二代表数字几 梦见别人被关监狱 汽车没有油了怎么办 公司的产品结构和产业选择哪个 上海站是指上海火车站吗? ipad备忘录取消手写转文字 推荐一些好看最新的伤感爱情电影 小规模企业销售商品会计分录怎么做 小规模纳税人,代销商品进货怎样做会计分录 教资面试考多久 教资面试考试需要多长时间 教资面试一般要考多久 教资面试一共考几天 教资面试一般考几天 教资面试有几天 2022年新劳动合同法何时实施 劳动合同法2022年新规定38条 从保定到张家口的大巴多长时间 保定到张家口尚义县有多远