servlet是线程安全的么
servlet生命周期
三个重要方法
1 init()
进行资源的加载
2 service()
处理请求,根据请求方式,调用doGet或者doPost
3 destroy()
进行资源的释放
servlet是单实例的,假如在处理请求时候,多线程访问了servlet的成员变量,则servlet是线程不安全的。
只要保证在service()方法中访问的都是局部变量,则servlet是线程安全的。
多线程下每个线程对局部变量都会有自己的一份copy,这样对局部变量的修改只会影响到自己的copy而不会对别的线程产生影响
public class HelloWorldServlet extends HttpServlet
{
String message; private static final long serialVersionUID = 787553024399133588L; public void service(HttpServletRequest request,HttpServletResponse response) throws IOException{
message =request.getParameter("message");
PrintWriter pw = response.getWriter();
try
{
Thread.sleep();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
pw.write("<div><strong>Hello World</strong>!</div>"+message);
pw.close();
} }
servlet是线程安全的么的更多相关文章
- Servlet 是否线程安全 看完便知
Servlet 是否线程安全 看完便知 转自:http://blog.sina.com.cn/s/blog_6448959f0100kct7.html 摘 要:介绍了Servlet多线程机制, ...
- 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题
servlet默认是存在线程安全问题的,但是说白了,servlet的线程安全问题实际上就是多线程的线程安全问题,因为servlet恰巧是一个多线程才会出现安全性问题. 浏览器每次通过http协议去提交 ...
- Servlet的线程安全
Servlet的线程安全 一.什么是Servlet的线程安全 1.在Servlet的整个生命周期中,构造方法只被执行一次.也就是说,在Servlet的整个生命周期中,只存在一个Servlet实例对象. ...
- 漫画 | Servlet属于线程安全的吗?
Servlet属于线程安全的吗? Servlet不是线程安全的 在JSP中,只有一行代码:<%=A+B %>,运行结果如何? jsp和servlet有什么关系? jsp一般被用在view层 ...
- servlet开发(二)之servlet的线程安全问题
之所以考虑线程安全问题,是因为引入了多线程.多线程指的是这个程序(一个进程)运行时产生了不止一个线程.如果不考虑多线程的话,程序执行只有一条路径,就像人在敲代码的时候只能敲代码,不能戴上耳机听歌.引入 ...
- servlet与线程与jdbc connection的关系
servlet与线程与jdbc connection的关系 都是一一绑定的关系, servlet接受那么多此请求. 一个请求,对应一个线程,对应一个DB POOL的connection. 因为conn ...
- Java面试题:Servlet是线程安全的吗?
Servlet不是线程安全的. 要解释为什么Servlet为什么不是线程安全的,需要了解Servlet容器(即Tomcat)使如何响应HTTP请求的. 当Tomcat接收到Client的HTTP请求时 ...
- servlet 最大线程数探索笔记
servlet默认是单例模式的,所以是单例多线程的.如果实现了singleservlet是可以多个servlet实例,下面是一个servlet的请求生命周期 1 客户端请求该 Servlet:加载 S ...
- Servlet的线程是不是共享同一个requset对象及servlet多线程
servlet多线程 一,servlet容器如何同时处理多个请求. Servlet采用多线程来处理多个请求同时访问,Servelet容器维护了一个线程池来服务请求.线程池实际上是等待执行代码的一组 ...
随机推荐
- (8)Microsoft office Word 2013版本操作入门_制作传单海报
1.纸张大小,方向设定. 1.1纸张大小: [页面布局]----[纸张大小] 可以选择已有的尺寸,也可以选择其他自定义的大小. 1.2 方向设定: [页面布局]--[纸张方向]选择 横向或者纵向 2. ...
- 【转】hibernate 延迟加载
Hibernae 的延迟加载是一个非常常用的技术,实体的集合属性默认会被延迟加载,实体所关联的实体默认也会被延迟加载.hibernate 通过这种延迟加载来降低系统的内存开销,从而保证 Hiberna ...
- Python3 系列之 可变参数和关键字参数
刚开始接触 python 的时候,对 python 中的 *wargs (可变参数) 和 **kwargs (关键字参数)的理解不是很透彻,看了一下 <Explore Python>一书, ...
- idea使用svn出现问题解决办法
idea一直在refreshing vcs history:解决办法: 有些模块中的版本信息是错的,如拷贝过来的代码,其远程仓库是不存在的, 因此要删除这些模块中的.svn文件夹 ...
- webpack+vue+vueRouter模块化构建完整项目实例详细步骤-入门篇
新建项目 开始(确认已经安装node环境和npm包管理工具) 1.新建项目文件名为start_vuedemo 2.npm init -y 初始化项目,我的win7系统,工程在d盘的vue_test_p ...
- easyUI按钮图表对照大全
easyUI图标与对照类的对应关系:
- windows平台vs2010编译64位libiconv与libxml2
(一)安装libiconv下载路径https://ftp.gnu.org/pub/gnu/libiconv/注意这里选择libiconv-1.11.1版本,因为之后的版本没有Makefile.msvc ...
- C# 开启一个新进程并为新进程设置工作目录
Process p = new System.Diagnostics.Process(); //设置新进程的工作目录,如果不设置那么新进程的工作目录为开启这个进程的工作目录 p.StartInfo.W ...
- selenium+pyquery爬取淘宝美食100页(无头静默模式)
import re from selenium import webdriver from selenium.webdriver.common.by import By from selenium.w ...
- git 入门教程之 git 私服搭建教程
git 私服搭建教程 前几节我们的远程仓库使用的是 github 网站,托管项目大多是公开的,如果不想让任何人都能看到就需要收费,而且 github 网站毕竟在国外,访问速度太慢,基于上述两点原因,我 ...