线程池的参数以及分类

线程池的参数

我们阅读线程池的源码可知,线程池有四个构造方法,共有7个参数供我们学习。

  1. corePoolSize:最大核心线程数:当创建的线程数小于该数时,该线程为核心线程,反之为非核心线程。
    核心线程:即使核心线程处于闲置状态,系统仍不必将它销毁。
  2. maximumPoolSize:最大线程数:当线程总数等于最大线程数的时候,如果再创建线程则会抛出异常。
  3. keepAliveTime:非核心线程超时时长:当非核心线程闲置超过此时长后,就会被系统销毁。
  4. nuit:超时时长的单位:该类型是一个枚举类型,天、时、分、秒、毫秒、微秒、微豪秒。
  5. warkQueue:执行Runnable方法的队列。
  6. threadFactory:用于创建线程。
  7. handle:用于抛出异常。

线程池的执行策略

  1. 当一个任务被添加进线程池后会判断当前线程数是否达到最大核心线程,如果达到最大核心线程,该线程被移至队列等待。
  2. 若队列已满就会新建一个非核心线程。
  3. 若线程总数大于最大线程数,就会抛出异常。

线程池的种类

线程池有四纵,通常这四种可以满足我们大部分的需求:

  1. CachedThreadPool
    创建一个可缓存线程池,可以灵活回收空闲线程。
  2. FixedThreadPool
    创建一个定长线程池,可以控制最大并发线程。
  3. ScheduledThreadPool
    创建一个定长线程池,可以支持定时和周期执行任务。
  4. SingleThreadPool
    创建一个单线程线程池,后续线程以队列的形式执行。

你可能感兴趣的:(多线程,Java基础,面试,java)