线程池(3)

线程池通过重用已存在的线程减少创建和销毁的开销,提高响应速度并增强系统稳定性。其工作原理包括任务队列和线程复用,核心参数如corePoolSize设定基础线程数,maximumPoolSize限制最大线程数,keepAliveTime定义空闲线程存活时间。当任务提交超出限制,会依据RejectedExecutionHandler进行拒绝策略处理。

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

个人学习笔记,如有错误请指正~

5.为什么使用线程池,有什么优点?
因为线程池有很多提高效率的优点。
比如说
1.降低资源消耗。它可以重复利用已创建的线程降低线程创建和销毁造成的消耗。
2.提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行
3.提高线程的可管理性。线程如果无限制的创建,不但会消耗系统资源,还会降低系统稳定性。用线程池就能统一分配和监控了。
6.线程池工作原理
在这里插入图片描述
工作原理:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了反复创建线程对象的操作,也就是说避免了消耗过多资源。
详细说的话,就是
1.有很多任务(task)处于一个队列(Queue)状态。
2.线程池容器分配一个线程对象(thread),负责处理线程任务task,此时这个线程处于被占用状态。如果有其他任务进来,线程池容器会分配其他线程对象来处理。
3.一旦处理任务(task)的线程执行任务结束,它就空闲下来了,但是并不会销毁,直到又有新的任务抵达,它又有可能被线程池容器分配去处理任务。
7.线程池重要参数有哪些?

public ThreadPoolExecutor(int corePoolSize,
							int maximumPoolSize,
							long keepAliveTime, 
							TimeUnit unit, 
							BlockingQueue<Runnable> workQueue, 
							ThreadFactory threadFactory, 
							RejectedExecutionHandler handler)

1.corePoolSize:线程池核心线程数量
2.maximumPoolSize:线程池最大数量(包含核心线程数量)
3.keepAliveTime:多余的空闲线程存货时间。当前线程数超过corePoolSize时,当空闲时间达到keepAliveTime时多余的空闲线程会被销毁,直到剩到corePoolSize为止。
4.unit:keepAliveTime的单位
5.BlockingQueue workQueue:队列任务,被提交但尚未被执行的任务
6.ThreadFactory threadFactory:表示生成线程池中工作线程的线程工厂,用于创建线程,一般默认就ok
7.RejectedExecutionHandler handler:拒绝策略。当队列满了,工作线程>=线程池的最大线程数
核心线程数满了,阻塞队列也满了,此时就需要扩容,达到线程池最大数后就会触发拒绝策略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值