Java多线程:ThreadPoolExecutor

本文详细介绍了JDK并发包中的ThreadPoolExecutor线程池服务。包括其构造方法的参数含义、任务执行流程,以及拒绝策略等关键信息。

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

ThreadPoolExecutor是JDK并发包提供的一个线程池服务,基于ThreadPoolExecutor可以很容易将一个Runnable接口的任务放入线程池中。

 

public ThreadPoolExecutor(int corePoolSize,  
                          int maximumPoolSize,  
                          long keepAliveTime,  
                          TimeUnit unit,  
                          BlockingQueue<Runnable> workQueue,  
                          RejectedExecutionHandler handler) {  
    this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,  
         Executors.defaultThreadFactory(), handler);  
}

 

 

 

参数解释

corePoolSize:核心线程数,会一直存活,即使没有任务,线程池会维护线程的最少数量。

maximumPoolSize:线程份维护线程的最大数量。

keepAliveTime:线程池维护线程所允许的空闲时间,当线程空闲时间达到keepAliveTime,该线程会退出,直到线程数量等于corePoolSize。如果allowCoreThreadTimeout设置为true,则所有线程均会退出直到线程数量为0.

unit:线程池维护线程所允许空闲时间的单位

workQueue:线程份所使用的缓冲队列

handler:线程池中的数量大于maximuPoolSize,对拒绝任务的处理策略。

 

(1)调用ThreadPoolExecutor的execute提交线程,首先检查CorePool,如果CorePool内的线程小于CorePoolSize,新创建线程执行任务。

(2)如果当前CorePool内的线程大于等于CorePoolSize,那么将线程加入到BlockingQueue。

(3)如果不能加入BlockingQueue,在小于MaxPoolSize的情况下创建线程执行任务。

(4)如果线程数据大于等于MaxPoolSize,那么执行拒绝策略。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值