加入收藏 | 设为首页 | 会员中心 | 我要投稿 宜春站长网 (https://www.0795zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 传媒 > 正文

聊聊线程池中,线程的增长/回收策略

发布时间:2021-03-01 16:48:14 所属栏目:传媒 来源:互联网
导读:释一下各个参数是什么意思: corePoolSize:核心线程数; maximumPoolSize:线程池的最大线程数; keepAliveTime:核心线程数之外的线程,最大空闲存活的时长; unit:keepAliveTime 的时间单位; workQueue:线程池的任务等待队列; threadFractory:线程工厂,

释一下各个参数是什么意思:

  • corePoolSize:核心线程数;
  • maximumPoolSize:线程池的最大线程数;
  • keepAliveTime:核心线程数之外的线程,最大空闲存活的时长;
  • unit:keepAliveTime 的时间单位;
  • workQueue:线程池的任务等待队列;
  • threadFractory:线程工厂,用来为线程池创建线程;
  • handler:拒绝策略,当线程池无法处理任务时的拒绝方式;

这其中很多参数的配置,都是相互影响的。例如任务等待队列 workQueue 配置不当,可能导致线程池中的线程,永远无法增长到核心线程数(maximumPoolSize)配置的线程数。

2.2 线程池中线程的增长策略

看到这里你应该就清楚了,线程池线程的增长策略,和 3 个参数有关系:

  • corePoolSize:核心线程数
  • maximumPoolSize:最大线程数;
  • workQueue:等待任务队列;


务会不断的触发线程池中线程的创建,直到线程数量达到核心线程数(corePoolSize),接下来会停止线程的创建,而是将这个新任务放入任务等待队列(workQueue)。

新任务不断进入任务等待队列,当该队列满了时,开始重新创建线程处理任务,直到线程池中线程的数量,到达 maximumPoolSize 配置的数量。

到这一步时,线程池的线程数达到最大值,并且没有空闲的线程,任务队列也存满了任务,这时如果还有新的任务进来,就会触发线程池的拒绝策略(handler),如果没有配置拒绝策略就会抛出 RejectedExecutionException 异常。

 


(编辑:宜春站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读