new ThreadPoolExecutor 参数说明
时间: 2023-12-21 10:32:01 浏览: 29
ThreadPoolExecutor 是一个线程池的实现类,它可以用来管理和调度线程的执行。下面是 ThreadPoolExecutor 的一些核心参数说明:
1. corePoolSize:核心线程数,即线程池中保持活动状态的线程数。当提交的任务数量小于核心线程数时,线程池会创建新的线程来处理任务,即使有空闲的线程存在。默认情况下,核心线程数为0。
2. maximumPoolSize:最大线程数,即线程池中允许的最大线程数。当提交的任务数量大于核心线程数时,线程池会创建新的线程来处理任务,直到达到最大线程数。如果任务数量继续增加,而线程池中的线程数已经达到最大线程数,则任务会被放入阻塞队列中等待执行。默认情况下,最大线程数为 Integer.MAX_VALUE。
3. keepAliveTime:线程空闲时间,即当线程池中的线程数量超过核心线程数时,多余的空闲线程在被终止之前等待新任务的最长时间。默认情况下,空闲线程会一直保持活动状态。
4. unit:线程空闲时间的单位,可以是 TimeUnit.DAYS、TimeUnit.HOURS、TimeUnit.MINUTES 等。默认情况下,单位为 TimeUnit.MILLISECONDS。
5. workQueue:阻塞队列,用于存储等待执行的任务。当线程池中的线程数达到核心线程数时,新提交的任务会被放入阻塞队列中等待执行。常用的阻塞队列有 ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue 等。
6. threadFactory:线程工厂,用于创建新的线程。默认情况下,使用 Executors.defaultThreadFactory() 方法创建线程。
7. handler:拒绝策略,用于当线程池无法接受新任务时的处理方式。常用的拒绝策略有 ThreadPoolExecutor.AbortPolicy(抛出 RejectedExecutionException 异常)、ThreadPoolExecutor.CallerRunsPolicy(由调用线程执行任务)、ThreadPoolExecutor.DiscardPolicy(丢弃任务)和 ThreadPoolExecutor.DiscardOldestPolicy(丢弃队列中最旧的任务)。
下面是一个示例代码,演示了如何使用 ThreadPoolExecutor 创建一个线程池并设置参数:
```python
from concurrent.futures import ThreadPoolExecutor
def task():
print("Executing task...")
# 创建一个线程池,核心线程数为2,最大线程数为4,空闲线程等待时间为1秒
executor = ThreadPoolExecutor(max_workers=4, core_workers=2, keep_alive_time=1)
# 提交任务到线程池
executor.submit(task)
executor.submit(task)
executor.submit(task)
executor.submit(task)
# 关闭线程池
executor.shutdown()
```