线程池运行原理

线程池通过核心线程数、最大线程数、空闲线程存活时间和阻塞队列来管理任务执行。当提交任务时,线程池会优先使用核心线程,如果核心线程池已满,任务会被放入阻塞队列。当阻塞队列也满时,非核心线程会被创建。若达到最大线程数,将根据预设的饱和策略处理,如丢弃任务或回退任务给调用者。常见的拒绝策略包括直接丢弃、无声丢弃、丢弃旧任务或回退任务执行。

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

核心参数:

corePollSize:核心线程池的大小

maximumPollSize:线程池能创建线程的最大个数

keepAliveTime:空闲线程存活时间

unit:时间单位,为keepAliveTime指定时间单位

workQueque:阻塞队列,用于保存任务的阻塞队列

threadFactory:创建线程的工厂类

handler:饱和策略(拒绝策略)

 

过程:

当我们获取线程池中的线程执行任务时

线程池会先判断核心线程池是否已满?添加到阻塞队列等待:在核心队列中创建线程提供给我们执行任务

然后判断阻塞队列是否已满?从非核心线程池创建线程:任务存储在队列中等待执行

最后判断非核心线程池是否已满?按饱和策略处理:在非核心线程池里创建线程执行任务

拒绝策略:

1. 丢弃任务,抛出异常;系统默认的拒绝策略

2. 丢弃任务,不抛异常;会数据丢失

3. 丢弃最前面的任务,然后重试失败再丢弃最前面的任务,不抛异常

4. 回退任务,不抛异常,调用者可手动去执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值