理解线程池的7个参数

核心线程数corePoolSize

        处理任务的核心线程数量,任务优先交由核线程进行处理,核心线程被占满则将新任务放入任务队列。核心线程处理完成当前任务后会从任务队列中取出任务处理。

最大线程数maximumPoolSize

        最大线程数=核心线程数+临时线程数,核心线程与任务队列均已被占满,则将新任务交由临时线程处理。临时线程处理完成当前任务后会从任务队列中取出任务处理。

生存时间keepAliveTime

        线程的空闲生存时间,临时线程空闲时间超过生存时间则自动销毁线程,核心线程在运行过程中始终存在。

时间单位unit

        线程的空闲生存时间keepAliveTime的计量单位。

任务队列workQueue

        核心线程已被占满,则其他任务进入任务队列等待处理。任务队列也被占满则创建临时线程将新任务交由临时线程进行处理。任务队列类型根据实际应用场景进行选择,使用有界队列避免出现创建大量线程,从而导致OOM。Java中有许多已经实现的队列类型,均不符合使用场景的话可以自定义队列。

线程工厂threadFactory

        通过线程工厂可以在创建线程或线程池时指定有意义的线程名称,方便出错时回溯。线程工厂也可以采用自定义工厂的方式。

拒绝策略handler

        当线程池中的线程及任务队列均已达到上限,此时有新任务进入则可以通过拒绝策略进行处理。JDK提供了4种默认的策略:CallerRunsPolicy、AbortPolicy、DiscardPolicy、DiscardOldestPolicy,以上策略在很多场景时不适用的。比较理想的方式是搭建MQ,并将新任务放入到MQ中,等待线程池处理完成部分任务释放资源后重新取回处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值