线程池在实际互联网项目中的案例

Servlet线程的设计

一个客户端请求,服务器就会创建一个新的线程来处理。

Server端新建一个socket连接监控客户端请求,理论上一个新建一个线程来处理。

servlet分成三个生命周期,如下图所示。
]
阶段1:初始化阶段servlet调用init()方法。

  • Servlet容器(例如tomcat)启动的时候会自动装在servlet。 实现只需要在web.xml里配置即可。
  • 在servlet容器启动后,客户首次向servlet发送请求。
  • servlet类文件被更新后,重新装载servlet,servlet创建一个servlet实例,并且调用init方法初始化。

阶段二:响应客户请求,客户首次向servlet发送请求。

阶段三:终止阶段。当服务器关闭的时候,调用destroy方法。

servlet线程安全分析:servlet是在容器里,以单例的形式存在,也会有线程安全的问题,但是servlet这个类设计的时候,就不存在共享变量,每个请求都有自己的request对象和response对象,不存在共享变量的问题,故servlet是线程安全的。

线程池如何合理的设置

关于线程池如何设置合理的思考。

首先,我们为什么要使用多线程?
因为单线程程序不能充分利用cpu的性能,多线程程序主要是通过压榨cpu性能,达到提高我们应用性能的目的。

  1. 估算一个服务器的大概的最大并发量。可以参考应用是cpu密集型,还是io密集型,以及内存大小,带宽大小等等。
  2. 通过压测来确定服务器能承受的最大负载量。

tomcat中线程池如何合理的设置

  1. tomcat里如何配置线程池
<Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="150" minSpareThreads="4"/>
    
<Connector executor="tomcatThreadPool" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
  1. 参数说明

  2. tomcat线程池加载源码
    类变量都有默认

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值