Tomcat 工作原理——线程池概述

Tomcat 工作原理——线程池概述
一、什么事Tomcat线程池

  1. Tomcat线程可以理解为 Tomcat存放线程的池子。
  2. 是池子就会有容积,他就会满,所以当有一些不需要用的线程就需要回收掉,以保证这个池子里面的线程不会满出来。

二、Tomcat 线程池的属性参数

  1. maxThreads : 最大线程数——池子的总容量
  2. maxSpareThreads:最大空闲数——容量内可保持一段时间不被回收的数量
  3. minSpareThreads:最小空闲数——永久不被回收的数量
  4. maxidleTime:最大空闲时间——一个阈值,间隔多久开始回收
  5. acceptCount:最大等待队列数——超过池子容量的东西就需要进入等待队列,这就是等待队列最大容量

三、 过程描述

假设最大线程数(maxThreads ) =600条,也就是说那么那么超过600条的时候再怎么办? 那么只有两种情况了
1.不让它在进入池子,直接拒绝。
2.去门口排队,那么这时候就用到了
关于第二种情况就用到了上面的 最大等待队列数(acceptCount)假设acceptCount=100 当大于100时那只能请回了
*上面说的是比较单独的问题 下面说说在合理范围内的问题
个人认为 上面的参数(maxThreads ,maxSpareThreads,minSpareThreads)应该有包含关系!

比如:maxThreads >maxSpareThreads>minSpareThreads
下面说说为什么我这么认为?
假设:(maxThreads =600 )> (maxSpareThreads =500 )> (minSpareThreads=100)
现在的情况你必须都是在池内可容纳的情况下 进行的
tomcat 线线程池会有默认的永久性不回收的 最小空闲数(可打开 tomcat server.xml 文件看下)
当超过最小空闲数100条的时候 tomcat会继续创建线程 101、102、103…等等

  1. 场景一 :到达500条(最大空闲数)的时候,不在继续创建线程,表示没有新的请求了 过了一段时间(maxidleTime)还是没有新增线程 但是这些线程 还在使用 那么他就会一直保持 不会进行回收

  2. 场景二:到达500条后 突然有很多线程不在使用了 过了一段时间(maxidleTime)他就需要回收 这就是空闲线程的回收
    他回收的顺序是按住倒叙回收的 就是从第500条回收
    回收顺序 500,499,498…等等,
    当回收到地100条(最小空闲线程数)时 它就不在回收了 因为 100以内 是永久存在的 即使是空闲状态 也不会回收 所以 这100 也是包含在500条以内的。

  3. 场景三:当超过500条时 又不满足600 条 只要在这范围内的线程空闲了 他立马就会回收不用等一段时间(maxidleTime)

  4. 场景四:超过600条的情况最开始时候已经表述了。

那么在 当大于100 小于500 的时候 它回收的条件是什么呢?
它就是 阈值 :最大空闲时间(maxidleTime)假设60s ;那条线程空闲超过60 秒就会回收!

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值