线程池的处理流程和原理

作者: 爱吃豆腐面 | 来源:发表于2018-06-08 15:16 被阅读166次

线程池的处理流程主要分为3步

  • 提交任务后,线程池先判断线程数是否达到了核心线程数(corePoolSize)。如果未达到线程数,则创建核心线程处理任务;否则,就执行下一步;
  • 接着线程池判断任务队列是否满了。如果没满,则将任务添加到任务队列中;否则,执行下一步;
  • 接着因为任务队列满了,线程池就判断线程数是否达到了最大线程数。如果未达到,则创建非核心线程处理任务;否则,就执行饱和策略,默认会抛出RejectedExecutionException异常。
线程池的处理流程.png

饱和策略:RejectedExecutionHandler

当任务队列和线程池都满了时所采取的应对策略,默认是AbordPolicy,表示无法处理新任务,并抛出RejectedExecutionException异常。此外还有3种策略:

  • CallerRunsPolicy:用调用者所在的线程处理任务。此策略提供简单的反馈机制,能够减缓新任务的提交速度。
  • DiscardPolicy:不能执行任务,并将任务删除。
  • DiscardOldestPolicy:丢弃队列最近的任务,并执行当前的任务。

相关文章

  • 第九章 线程池

    线程池的实现原理和使用建议。 当提交一个新任务到线程池时,线程池的处理流程如下。1)线程池判断核心线程池里的线程是...

  • Java线程池的实现原理

    线程池的实现原理 当向线程池提交一个任务之后,线程池时如何处理的呢?让我们来看一下线程池的主要处理流程: 线程池判...

  • Java高并发系列——检视阅读(三)

    JAVA线程池 线程池实现原理 类似于一个工厂的运作。 当向线程池提交一个任务之后,线程池的处理流程如下: 判断是...

  • 线程池的处理流程和原理

    线程池的处理流程主要分为3步 提交任务后,线程池先判断线程数是否达到了核心线程数(corePoolSize)。如果...

  • JAVA线程池原理及配置

    线程池原理剖析 提交一个任务到线程池中,线程池的处理流程如下:1、判断线程池里的核心线程是否都在执行任务,如果不是...

  • 动画理解

    传统 IO 阻塞 多路复用的select 多路复用的epoll 线程池原理 故障处理流程

  • 大白话聊聊线程池的工作原理和核心参数

    目录 1、为啥要使用线程池 2、线程池的工作原理 3、线程池都用哪些核心参数 4. 有界队列下的线程池的工作流程 ...

  • 线程池的工作流程理解与项目中实战

    线程池主要处理流程 1.线程池判断核心线程是否已经满了,否 则会创建线程执行任务,是 进入下一个流程2.线程池判断...

  • Android核心框架记录OkHttp、EventBus、Gli

    1. OkHttp框架的使用和原理 框架原理是建立线程池,利用调度线程,不断的取任务进行处理: Request,a...

  • Java并发-29.线程池

    1. 线程池的原理 线程池优点:降低资源消耗提高响应速度提高线程可管理性 线程池流程判断核心线程池中线程是否都在执...

网友评论

    本文标题:线程池的处理流程和原理

    本文链接:https://www.haomeiwen.com/subject/tpcasftx.html