Sevlet的线程不安全问题

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

JavaWeb:Sevlet的线程不安全问题

解决方案:

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

                    保证只有一个线程访问Servlet,如果有多个线程就排队,如此一来,性能极低(已过时)。

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

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

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

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

相关文章:

  • 2022-01-19
  • 2022-02-09
  • 2022-02-15
猜你喜欢
  • 2022-12-23
  • 2021-05-16
  • 2023-03-24
  • 2022-01-07
  • 2021-09-19
  • 2022-12-23
相关资源
相似解决方案