线程池ThreadPoolExecutor原理介绍
2021-08-14 10:36:28 2 举报
简单介绍线程池ThreadPoolExecutor的提交任务execute()方法逻辑,后续会在完善!
作者其他创作
大纲/内容
目前工作线程数是否小于最大线程数
拒绝任务
线程池是否关闭
是
否
添加工作线程worker,并执行
execute(Runnable command)
添加任务到阻塞队列,并等待执行
线程池开始
结束
队列已满,添加失败
1.介绍线程池提交任务阶段
添加成功
线程池工作,并且任务放到队列;isRunning(c) && workQueue.offer(command)
判断当前工作的线程数量是否小于corePoolSize
提交任务
corePoolSize: 核心线程数;maximumPoolSize: 最大线程数,这个是当workQueue满之后,这个参数才其起效果;keepAliveTime: 该参数规定了超过corePoolSize的线程,如果闲置的时间超过这个keepAliveTime的话,则就会死亡;unit: 生存时间的单位;workQueue: 任务队列;当工作的线程大于corePoolSize的时候,才会加入队列中;threadFactory: 创建线程的工厂;handler: 当任务队列workQueue已经满了,并且工作的线程大于maximumPoolSize的时候,执行的拒绝策略;
收藏
收藏
0 条评论
回复 删除
下一页