Servlet并发处理

一 线程模型工作流程:

这里写图片描述
servlet收到客户端的请求,servlet首先把请求发送给调度器,由调度器进行统一的请求转发。调度器会从线程池中选取一个工作线程,由该工作线程执行servlet中的service方法。这样就会出现多个线程同时执行servlet中service方法的情况。

二 Servlet并发处理的特点:

从Servlet的生命周期来看,对于某个Servlet,Servlet只会初始化一次,也就是说在Servlet容器中只会有一个Servlet对象,不敢我们多少个请求,都是针对同一个Servlet对象。

三 Servlet线程安全的注意要点:

(1) 变量的线程安全,尽量使用局部变量,因为多线程不共享局部变量。
使用同步块Synchronized, 做加锁的时候,尽量缩小Synchronized代码块的范围。
(2) 属性的线程安全
ServletContext线程不安全:因为ServletContext是可以多线程读取它的属性,所以线程不安全,那我们在对sevletContext属性进行读写的时候,就需要注意做一些同步的处理。
HttpSession理论上线程安全:HttpSession属性是在用户会话期间存在的,那只能在处理同一个Session请求的线程中被访问,那Session对象的属性访问理论上是安全的,当用户打开多个属于同一个进程的浏览器窗口的时候,在这些窗口的访问属于同一个Session会出现多个请求,需要多个线程来进行处理,也会照成多个线程读写属性的问题,这个时候我们还会需要对Session的属性进行一个同步处理。所以是理论上的线程安全。
ServletRequst线程安全:对于每一个请求只能由一个线程进行处理,所以ServletRequst对象只能在同一个线程中被访问。(3)避免在Servlet中创建线程。
(4)多个Servlet访问外部对象加锁。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值