Servlet线程不安全

Servlet线程不安全问题

    造成的根本原因:Servlet是单例的,Servlet中的成员变量只有一份,多个客户端就好比是多个线程,都访问的是同一个空间。

解决方案:

1.让当前Servlet实现javax.servlet.SingleThreadModel接口

  包装只有一个线程放Servlet,如果有多个线程就排队,如此的话,性能超低(过时)

2.在Servlet中不要使用成员变量,使用局部变量

  每一个用户,每一个请求都会调用service方法,而局部变量在service方法中,每一次都是新的空间

----------------------------------------------------------------------------------------------------------------------------------

Struts1,Spring MVC都是线程不安全的,都是单例的和Servlet类似

Struts2是线程安全的,因为每一个线程(请求)都是一个新的action对象。

Servlet线程不安全