java 线程池的理解_java线程池深入理解

线程池经常被面试问到,引起了我的重视,于是花了几个小时看了线程池的源码,做了如下总结

一、线程池主要配置

1.核心线程数corePoolsize

2.maxPoolSize最大线程数

3.缓冲队列

4.拒绝策略

二、线程池的工作原理

线程池根据配置初始化规定数量的核心线程,缓冲队列和拒绝策略,并发线程不是非常大的情况,当核心线程用完了,则新增线程入队列等待,当队列满了,则申请最大值maxSize线程数继续处理队列的线程,如果当并发线程的数量超过队列并且并发数也超过max的则启动拒绝策略,抛出异常(默认策略),当然你可以重写自定义拒绝策略满足你的业务需求,等线程池空闲下来,会回收多余核心线程数的空闲线程。

三、四种拒绝策略模式:

默认策略:当线程数>core数,并且队列满了,直接抛出rejectException。

抛弃策略:当线程数>core数,并且队列满了,不处理,不抛出异常。

移除策略:当线程数>core数,并且队列满了,移除旧的队列的等待数据。

接受 策略:当线程数>core数,并且队列满了,直接用调用者所在线程处理。

四、线程池种类:

single:单线程串行执行。

fix:指定大小的线程

不指定线程数的线程

当消费速度比生产者多,比如秒杀业务,会将超过核心的线程回收。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值