什么是线程 线程由什么组成


线程池的七个关键参数是指在创建ThreadPoolExecutor时所设定的七个重要参数。这些参数的作用如下所述:

  1. 核心线程数(corePoolSize):这是线程池中始终保持存活的线程数量。它们就像是一个中不可或缺的固定员工,无论工作负载如何,他们都始终在岗。
  2. 最大线程数(maximumPoolSize):这是线程池允许的最大线程数量。当任务队列满了,线程池可以创建更多的线程来处理额外的任务。这就像是一个在忙碌时可以雇佣的临时工数量。
  3. 空闲线程存活时间(keepAliveTime):当线程池中没有任务时,多余的线程会逐渐被销毁。销毁的线程数量由最大线程数与核心线程数之差决定。这个时间参数决定了临时工在没有任务时可以在中逗留的最长时间。
  4. 时间单位(TimeUnit):这是一个描述单位参数,用来定义keepAliveTime的时间单位,可能是天、小时、分钟、秒、毫秒等。
  5. 线程池任务队列(BlockingQueue):这是一个用来存放待执行任务的队列。选择合适的队列类型对线程池的性能至关重要。
  6. 线程工厂(ThreadFactory):这是一个用于创建新线程的工厂方法。通过该方法,可以自定义线程的命名规则、优先级以及其他属性。
  7. 拒绝策略(RejectedExecutionHandler):当任务数量超出线程池处理能力时,该策略定义了如何处理这些被拒绝的任务。

关于核心线程数,可以将其理解为中的固定员工,他们长期稳定地工作,不轻易被解雇。

关于最大线程数,这代表了在忙碌时可以雇佣的临时工数量。当工作负载过大时,这些临时工会协助固定员工完成任务。

关于空闲线程存活时间,当临时工完成工作后,他们会有一段时间在中等待新的任务。这个时间参数定义了他们等待的最长时间。

时间单位参数则用来指定空闲线程存活时间的具体单位,如天、小时等。

关于线程池任务队列,它是线程池中的中转站,用来存储待执行的任务。选择合适的队列类型可以提高线程池的效率和性能。

线程工厂的使用,可以让开发者更加灵活地控制线程的创建过程,包括设置线程的优先级、命名规则等。

拒绝策略是当任务过多超过线程池处理能力时的一种应对策略,开发者可以根据实际需求选择合适的拒绝策略。