线程池七大核心参数执行顺序

  1. corePoolSize(核心线程数):
    线程池中一直存活的线程数量。在线程池初始化或者任务提交后,线程池会首先创建corePoolSize个线程来执行任务,即使这些线程处于空闲状态。
  2. maximumPoolSize(最大线程数):
    线程池中允许存在的最大线程数量。如果队列中的任务数超过了maximumPoolSize,那么线程池会创建新的线程来处理该任务。可通过调整该参数来设定线程池的最大并发处理能力。
  3. keepAliveTime(线程空闲时间):
    在线程池中,超过corePoolSize数量的线程在空闲时间超过keepAliveTime后会被销毁,以减少资源的消耗。通常情况下,线程在空闲时间超过keepAliveTime后,会被销毁直到线程池中的线程数不超过corePoolSize。
  4. unit(线程空闲时间单位):
    keepAliveTime的时间单位。可以选择秒、毫秒、微秒等单位。
  5. workQueue(任务队列):
    线程池中用于存储任务的队列。当任务来临时,如果当前线程数小于corePoolSize,则会创建新的线程来执行任务;如果当前线程数大于等于corePoolSize,则会将任务加入到workQueue中。
  6. threadFactory(线程工厂):
    线程工厂用于创建线程,可以定制线程的一些属性,如线程名、优先级等。可以通过实现ThreadFactory接口来自定义线程工厂。
  7. handler(饱和策略):
    当线程池中的线程数达到maximumPoolSize并且任务队列已满时,需要采取一种策略来处理新提交的任务。常见的饱和策略有:AbortPolicy(抛出RejectedExecutionException异常)、CallerRunsPolicy(由提交任务的线程来执行该任务)、DiscardOldestPolicy(丢弃队列中最旧的任务)和DiscardPolicy(直接丢弃新提交的任务)。

    总结:
           在程序启动时,线程池会创建一定数量的核心线程,这些线程会一直存活在线程池中,即使它们处于空闲状态也不会被销毁。执行顺序大致是:提交任务-》核心线程数-》任务队列-》最大线程数-》拒绝策略,详见如下图:
    线程池七大核心参数执行顺序_第1张图片

你可能感兴趣的:(java,jvm,开发语言)