线程池的7大参数

1.线程池的7大重要参数介绍

 

 

 

1.corePoolSize

  1.1 线程中长驻的核心线程

  1.2 当核心线程中的线程数量达到corePoolSize之后就会把任务放到缓存队列

 

 

2.maximumPoolSize

 2.1线程池中能够容纳同时执行的线程最大数,此值必须大于等于1

 

3.keepAliveTime

 3.1 多余的空闲线程存活时间,当前线程数超过 corePoolSize 时,当空闲时间达到keepAliveTime时多余的空闲线程会被销毁,直到剩到corePoolSize为止

 

 

 

 

4. unit 

  4.1 keepAliveTime的单位 

 

5. BlockingQueue<Runnable> workQueue

  5.1队列任务,被提交但尚未被执行的任务

 

 

 

6.ThreadFactory threadFactory

 6.1 表示生成线程池中工作线程的线程工厂,用于创建线程,一般默认既可.

 

 

 

7.RejectedExecutionHandler handler

 7.1拒绝策略,表示当对列满了,工作线程大于等于线程池的最大线程数(maximumPoolSize)

 核心线程数满了,阻塞队列也满了,此时需要进行扩容,达到线程池最大数后就会触发拒绝策略。

 

 

### Java线程池的七个参数详解 Java中的`ThreadPoolExecutor`类提供了创建线程池的功能,其构造方法中有七个重要参数用于定义线程池的行为。以下是这些参数的作用说明: #### 1. **corePoolSize** 核心线程数是指即使处于空闲状态也会被保留在线程池中的最小线程数量。如果设置了允许核心线程超时(通过`allowCoreThreadTimeOut`),那么核心线程也可能在空闲一段时间后被销毁[^1]。 #### 2. **maximumPoolSize** 最线程数表示线程池中可以容纳的最线程数量。当工作队列已满且当前运行的线程数小于该值时,会继续创建新线程来执行任务。 #### 3. **keepAliveTime** 这是非核心线程闲置后的存活时间。一旦超过这个时间而仍然没有新的任务分配给它们,则会被终止并移除。需要注意的是,只有当线程的数量超过了`corePoolSize`时才会应用此规则;除非启用了前述提到的核心线程超时功能。 #### 4. **unit** 这是一个枚举类型的时间单位,用来指定上面`keepAliveTime`所使用的具体时间尺度,比如秒(`SECONDS`)、毫秒(`MILLISECONDS`)等。 #### 5. **workQueue** 工作队列是用来保存等待被执行的任务的对象集合。常见的实现包括无界阻塞队列 (`LinkedBlockingQueue`) 和有界阻塞队列 (`ArrayBlockingQueue`) 等多种形式。不同的队列策略会影响整个系统的性能表现以及资源消耗情况。 #### 6. **threadFactory** 线程工厂是一个接口,它负责实际创建每一个工作者线程实例的过程。默认情况下使用的是系统自带的标准实现方式,但如果开发者希望自定义某些属性或者行为模式的话就可以提供自己的版本来进行替代操作。 #### 7. **handler** 拒绝策略处理器,在提交任务数超过 `maxmumPoolSize` 并且工作队列已经满了的情况下采取的一种处理机制。JDK 提供了几种内置的选择方案,例如抛异常 (AbortPolicy),调用者自行运行(CallrRunsPolicy)等等。 ```java // 创建一个具有固定小的工作线程池的例子 ExecutorService executor = new ThreadPoolExecutor( 5, // corePoolSize 10, // maximumPoolSize 60L, // keepAliveTime TimeUnit.SECONDS, // unit new LinkedBlockingQueue<>(100), // workQueue Executors.defaultThreadFactory(), // threadFactory new ThreadPoolExecutor.AbortPolicy() // handler ); ``` 上述代码片段展示了如何利用这七项配置构建一个简单的线程池实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值