Servlet的线程安全问题
2013-07-03 21:47
323 查看
Servlet容器默认采用单实例多线程的方式来处理请求,这样减少产生Servlet实例的开销,提升了对请求的响应时间
Servlet 体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据 web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。Servlet容器会自动使用线程池等技术来支持系统的运行.
ServletRequest:(线程是安全的)
对于每一个请求,由一个工作线程来执行,都会创建有一个新的ServletRequest对象,所以ServletRequest对象只能在一个线程中被访问。ServletRequest是线程安全的。
注意:ServletRequest对象在service方法的范围内是有效的,不要试图在service方法结束后仍然保存请求对象的引用。
ServletContext:(线程是不安全的)
ServletContext是可以多线程同时读/写属性的,线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。
所以在Servlet上下文中尽可能少量保存会被修改(写)的数据,可以采取其他方式在多个Servlet中共享,比方我们可以使用单例模式来处理共享数据。
Servlet 体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据 web.xml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。Servlet容器会自动使用线程池等技术来支持系统的运行.
ServletRequest:(线程是安全的)
对于每一个请求,由一个工作线程来执行,都会创建有一个新的ServletRequest对象,所以ServletRequest对象只能在一个线程中被访问。ServletRequest是线程安全的。
注意:ServletRequest对象在service方法的范围内是有效的,不要试图在service方法结束后仍然保存请求对象的引用。
ServletContext:(线程是不安全的)
ServletContext是可以多线程同时读/写属性的,线程是不安全的。要对属性的读写进行同步处理或者进行深度Clone()。
所以在Servlet上下文中尽可能少量保存会被修改(写)的数据,可以采取其他方式在多个Servlet中共享,比方我们可以使用单例模式来处理共享数据。
相关文章推荐
- Servlet的线程安全问题
- struts2,servlet的线程安全问题
- 关于单实例多线程的servlet的线程安全问题的探讨
- Servlet,Struts,springMVC 的线程安全问题
- Servlet 的线程安全问题
- servlet 的线程安全问题解析
- Servlet的线程安全问题
- 0019 Servlet容器的实现:单实例多线程的线程安全问题【基础】
- Servlet和JSP的线程安全问题
- 针对Servlet的线程安全问题
- Servlet线程安全相关问题
- 深入研究servlet的线程安全问题
- 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题
- servlet struts1 的线程安全问题
- 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题
- Servlet线程安全相关问题
- Servlet线程安全问题学习总结
- java-web之servlet中的线程安全问题
- Servlet的线程安全问题
- 玩转Web之servlet(五)---- 怎样解决servlet的线程安全问题