zoukankan      html  css  js  c++  java
  • 面试题:线程池处理流程 没用

    ①首先会判断核心线程池里是否有线程可执行,有空闲线程则创建一个线程来执行任务。

    ②当核心线程池里已经没有线程可执行的时候,此时将任务丢到任务队列中去。

    ③如果任务队列(有界)也已经满了的话,但运行的线程数小于最大线程池的数量的时候,此时将会新建一个线程用于执行任务,但如果运行的线程数已经达到最大线程池的数量的时候,此时将无法创建线程执行任务。

    所以实际上对于线程池不仅是单纯地将任务丢到线程池,线程池中有线程就执行任务,没线程就等待。

    另一种流程解释::::

    step1.调用ThreadPoolExecutor的execute提交线程,首先检查CorePool,如果CorePool内的线程小于CorePoolSize,新创建线程执行任务。
    step2.如果当前CorePool内的线程大于等于CorePoolSize,那么将线程加入到BlockingQueue。
    step3.如果不能加入BlockingQueue,在小于MaxPoolSize的情况下创建线程执行任务。
    step4.如果线程数大于等于MaxPoolSize,那么执行拒绝策略。



  • 相关阅读:
    JSP
    Map集合的四种遍历
    过滤器和监听器
    Web常用对象(2)
    Web常用对象(1)
    Java Web了解和Servlet初次见面
    面向对象之继承(1)
    SpringBoot使用简单缓存
    SpringBoot整合mybatis
    Spring Security 入门学习--数据库认证和授权
  • 原文地址:https://www.cnblogs.com/shan1393/p/9001201.html
Copyright © 2011-2022 走看看