线程池的底层工作原理
2019-05-30 10:22:13 3 举报
线程池的底层工作原理
作者其他创作
大纲/内容
1. 当线程池中的线程数小于corePoolSize时,新提交任务将创建一个新线程执行任务,即使此时线程池中存在空闲线程。
销毁
workQueue
4. 当提交任务数超过maxmumPoolSize+workQueue时,新提交任务由 RejectedExecutionHandler 处理
6. 当设置allowCoreThreadTimeOut(true)时,任何线程空闲时间超过keepAliveTime后就会被销毁。
maximumPoolSize
corePoolSize
threadPool
3. 当workQueue已满,且 maximumPoolSize 大于 corePoolSize 时,新提交任务会创建新线程执行任务
线程池的底层工作原理
task
RejectedExecutionHandler
5. 当线程池中线程数超过corePoolSize,空闲时间超过keepAliveTime的线程会被销毁
拒绝策略:- AbortPolicy:直接抛出RejectedExecutionException异常,阻止系统正常运行- CallerRunsPolicy:该策略既不会抛弃任务,也不会抛出异常,而是将不能执行的任务回退给调用者,从而降低新任务的流量- DiscardOldestPolicy:抛弃队列中等待最久的任务,然后把当前任务加入队列中尝试再次提交当前任务- DiscardPolicy:直接丢弃任务,不予任何处理也不抛出异常。如果允许任务丢失,这是最好的一种方案
2. 当线程池达到corePoolSize时,新提交任务将被放入 workQueue 中,等待线程池中任务调度执行。
0 条评论
下一页