Servlet与线程安全

Servlet与线程安全

先说结论,Servlet本身是单例的,线程安全的。但是如果引入共享变量,则可能会变得线程不安全。
在这里插入图片描述

1. 什么是线程安全

首先说明一下对线程安全的讨论,哪种情况我们可以称作线程安全?
《Java并发编程实战》给出的定义:

当多个线程访问某个类时,不管运行时环境采用何种调度方式,或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的.

2. Servlet的生命周期,传送门

3. Servlet的调用过程

Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。

  • 1.客户端通过发送请求给Tomcat,Tomcat发送客户端的请求页面给客户端。
  • 2.用户对请求页面进行相关操作后将页面提交给Tomcat,Tomcat将其封装成一个HttpRequest对象,然后对请求进行处理,。
  • 3.Tomcat截获请求,根据action属性值查询xml文件中对应的servlet-name,再根据servlet-name查询到对应的java类(如果是第一次,Tomcat则会将servlet编译成java类文件,所以如果servlet有很多的话第一次运行的时候程序会比较慢)。
  • 4.Tomcat实例化查询到的java类,注意该类只实例化一次。
  • 5.调用java类对象的service()方法(如果不对service()方法进行重写则根据提交的方式来决定执行doPost()方法还是doGet()方法)。
  • 6.通过request对象取得客户端传过来的数据,对数据进行处理后通过response对象将处理结果写回客户端。

4. Servlet是线程安全的吗?

从上面Servlet的调用过程可以看出,当客户端第一次请求Servle

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值