线程池中ThreadPoolExecutor构造器参数介绍

本文详细解析了线程池ThreadPoolExecutor构造器的7个参数,包括核心池大小、最大池大小、阻塞队列等,并阐述了它们之间的关系及工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 概要

线程池中ThreadPoolExecutor构造器有7个参数,如下所示。

public ThreadPoolExecutor(int corePoolSize,
                          int maximumPoolSize,
                          long keepAliveTime,
                          TimeUnit unit,
                          BlockingQueue<Runnable> workQueue,
                          ThreadFactory threadFactory,
                          RejectedExecutionHandler handler) {
  //...
}

1. corePoolSize

核心池大小corePoolSize:表示线程池维护线程的最少数量

2. maximumPoolSize

最大池大小maximumPoolSize:表示线程池维护线程的最大数量

3. workQueue

阻塞队列workQueue:表示如果任务数量超过核心池大小,多余的任务添加到阻塞队列中

4. corePoolSize、workQueue、maximumPoolSize的关系

前提假设:向线程池每添加一个任务就sleep。也就是说假设任务数与线程数一一对应,每添加一个任务就对应的创建一个线程,并且一直等待其他线程。
因为可能某一个线程执行了两个任务,看不出效果。
a.

  if 任务数 <= 核心池大小 
     则每添加一个任务就会创建一个线程来执行该任务,线程最大数量等于核心池大小

b.

  if 任务数 > 核心池大小 && 任务数 <= 核心池大小 + 阻塞队列大小
     则线程数量等于核心池大小,其余任务放入到阻塞队列中

c.

  if 任务数 > 核心池大小 + 阻塞队列大小 && 任务数 <= 最大池大小
     则会创建新的线程来处理新的任务

d.

  if 任务数 > 最大池大小
     则会采用拒绝策略handler

5. 参数keepAliveTime

6. 参数unit

7. 参数threadFactory

8. 参数handler

keepAliveTime: 线程池维护线程所允许的空闲时间
unit: 线程池维护线程所允许的空闲时间的单位
handler: 线程池对拒绝任务的处理策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值