Tomcat线程池

Tomcat线程池

Tomcat在哪里用到了线程池呢?

image-20211015151533115

  • LimitLatch用来限流,可以控制最大连接个数,类似J.U.C中的Semaphore后面再讲
  • Acceptor只负责[接收新的socket连接]
  • Poller 只负责监听socket channel是否有[可读的IO事件]
  • 一旦可读,封装-一个任务对象(socketProcessor) ,提交给Executor线程池处理
  • Executor 线程池中的工作线程最终负责[处理请求]

Tomcat线程池扩展了ThreadPoolExecutor,行为稍有不同

  • 如果总线程数达到maximumPoolSize
    • 这时不会立刻抛RejectedExecutionException异常
    • 而是再次尝试将任务放入队列,如果还失败,才抛出RejectedExecutionException异常

image-20211015152039420

当父类因为线程池达到了最大线程数而抛出拒绝策略异常时,子类捕捉后将任务在强迫加入道队列里面,如果此时再失败就抛出异常

Tomcat线程池配置

Conrector配置

image-20211015152427845

image-20211015152643612

tomcat是守护线程,主线程结束,程序就结束了

Executor线程配置

image-20211015152805503

默认队列是无界的,那就是没有机会创建救急线程??

image-20211015152859755

tomcat对其做出了改变,当任务数小于核心线程数将其添加到队列。当核心线程数<任务数<最大线程数时,不是将其添加到队列而是创建救急线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值