• 技术文章 >java >java基础

    java线程池的运行流程

    小妮浅浅小妮浅浅2021-01-11 13:45:52原创2984

    线程池在执行任务的时候,根据线程的数量,会分成不同的处理方式。如果任务没有饱和,则会新建任务。在饱和的时候,还会分出一种阈值情况的讨论。下面我们就线程池的执行流程进行讲解,同时就线程饱和的处理方法和流程中的图解为大家带来展示,帮助大家更好的理解整个线程池的流程。

    1.线程池执行流程

    任务被提交到线程池,会先判断当前线程数量是否小于corePoolSize。

    (1)如果小于则创建线程来执行提交的任务,否则将任务放入workQueue队列;

    (2)如果workQueue满了,则判断当前线程数量是否小于maximumPoolSize;

    (3)如果小于则创建线程执行任务,否则就会调用handler,以表示线程池拒绝接收任务。

    2.线程池饱和策略

    AbortPolicy:直接抛出一个异常,默认策略

    DiscardPolicy: 直接丢弃任务

    DiscardOldestPolicy:抛弃下一个将要被执行的任务(最旧任务)

    CallerRunsPolicy:主线程中执行任务

    流程角度图解

    结构角度图解

    以上就是java线程池的运行流程,我们在用线程池处理线程时,要先分类讨论其中的数量问题。看完基础内容后,可以结合上方的图片强化理解。

    专题推荐:java线程池运行流程
    上一篇:ThreadPoolExecutor在java中创建线程池 下一篇:java线程池创建方式

    相关文章推荐

    • java executor框架的应用• java中ExecutorService有几种创建方法• java中关闭ExecutorService• ThreadPoolExecutor在java中创建线程池

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网