为什么要用线程池?线程池的优点?线程池的主要参数和处理流程?有几种线程池?线程池的实现过程?

线程池是预先创建的线程集合,用于执行新任务,减少创建和销毁线程的开销,提高响应速度和资源利用率。它能控制最大并发线程数,避免资源竞争,提供定时和周期性任务执行,并通过拒绝策略处理过多任务。线程池包括固定大小、可缓存、单线程和定时任务等类型。
摘要由CSDN通过智能技术生成

为什么要用线程池?

什么是线程池?

线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,在需要执行新的任务重用这些线程而不是新建一个线程

使用线程池的好处?

  1. 线程池改进了一个应用程序的响应时间,由于线程池中的线程已经准备好且等待被分配任务,应用程序可以直接拿来使用而不用新建一个线程
  2. 线程池节省了CLR 为每个短生存周期任务创建一个完整的线程开销并可以在任务完成后回收资源
  3. 线程池根据当前在系统中运行的进程优化线程时间片
  4. 线程池允许开启多个任务不用为每个线程设置属性
  5. 线程池允许为正在执行的任务程序参数传递一个包含状态信息的对象引用
  6. 线程池可以用来解决处理一个特定请求最大线程数量限制问题                                                                                               

线程池的优点?

  1. 重用存在的线程减少对象创建销毁开销
  2. 控制最大并发线程数提高系统资源的使用率避免过多资源竞争,避免堵塞
  3. 提供定时执行定期执行单线程并发数控制等功能

线程池的主要参数和处理流程?

主要参数有:

  1. 线程池核心线程数大小
  2. 最大线程数
  3. 存储的队列
  4. 拒绝策略
  5. 空闲线程存活时长

处理流程有:

需要任务大于核心线程数时,把任务存放在存储任务的队列里,

存储队列,就开始增加线程池创建的线程数量

如果线程数量也达最,就开始执行拒绝策略(如记录日志,直接丢掉,或丢弃最老任务,或交给提交任务的线程执行)

当一个线程完成时,它会从队列中取下一个任务来执行,

当一个线程无事可做,且超过一定时间时,如果当前运行的线程数大于核心线程数,那这个线程会停掉

有几种线程池?线程池的实现过程?

1> newFixedThreadPool 创建一个指定大小线程池,每当提交一个任务创建一个线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到等待队列

2> newCachedThreadPool 创建一个可缓存线程池

特点是:

  • 工作线程创建数量几乎没有限制(其实也有限制的,数目为Interger.MAX_VALUE),这样可灵活的往线程池中添加线程
  • 如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(默认为1分钟),则该工作线程将自动终止,终止后,如果又提交了新的任务,则线程池重新创建一个工作线程

3> newSingleThreadExecutor 常见一个单线程Executor,即之创建唯一的工作者线程来执行任务,如果这个线程异常结束,会有另一个取代它,保证顺序执行

4> newScheduleThreadPool 创建一个定长线程池,支持定时周期性任务执行,如Timer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值