Java 线程池提交任务流程

Java 线程池ThreadPoolExecutor提交任务流程如下:

Java 线程池提交任务流程

流程解释为:

  1. 当线程池新加入一个线程时,首先判断当前线程数,是否小于coreSize,如果小于,则执行步骤2,否则执行3
  2. 创建新线程添加到线程池中,跳转结束
  3. 判断当前线程池等待队列是否已满,若已满,则跳转至步骤5
  4. 加入等待队列,等待线程池空闲,跳转结束
  5. 判断当前线程数是否已达到maximumPoolSize,若未达到,则跳转至步骤7
  6. 执行线程池拒绝策略,跳转结束
  7. 创建一个新线程,执行任务
  8. 跳转结束