各个参数讲解:
核心线程数量:参数指定了线程池中保留的核心线程数。在任务数量小于等于核心线程数时,线程池中会一直保留这些核心线程,即使它们处于空闲状态。这样可以避免频繁地创建和销毁线程,提高线程池的效率。当任务数量大于核心线程数时,线程池会根据情况动态地创建新线程来处理任务,直到达到最大线程数。
最大线程数: 程序中最大可以存在的线程数量。
最大空闲时间和时间单位:除了核心线程,其余的线程超过最大的空闲时间的话会被销毁。时间单位就是这个最大时间的时间单位。
线程工厂:线程池中的threadFactory参数指定了用于创建线程的工厂。线程池会根据需要创建新的线程来执行任务,而线程工厂则负责创建这些线程。通过指定自定义的线程工厂,可以控制线程的创建方式,例如设置线程的名称、优先级、是否为守护线程等。在Java中,可以通过实现ThreadFactory接口来定义自己的线程工厂。在创建线程池时,可以将自定义的线程工厂作为参数传入。
任务队列:当任务数量达到核心线程数量时,不会立即创建新线程而是加入任务队列排队,当任务队列装不下的时候才会网最大线程数继续创建新线程。
饱和处理机制:RejectedExecutionHandler参数是线程池中的一个参数,用于处理当线程池中的任务队列已满,无法继续接收新的任务时该如何处理。该参数有以下三种可选值:
-
ThreadPoolExecutor.AbortPolicy:当任务队列已满时,直接抛出RejectedExecutionException异常。
-
ThreadPoolExecutor.CallerRunsPolicy:当任务队列已满时,将任务返回给提交任务的线程执行。
-
ThreadPoolExecutor.DiscardOldestPolicy:当任务队列已满时,丢弃队列中最早的任务,然后尝试再次提交任务。
-
ThreadPoolExecutor.DiscardPolicy:当任务队列已满时,直接丢弃新提交的任务,不做任何处理。
这个参数可以根据实际情况进行设置,以保证线程池的正常运行。