JavaWeb:Sevlet的线程不安全问题

                                                Sevlet的线程不安全问题

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

解决方案:

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

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

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

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

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

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

猜你喜欢

转载自blog.csdn.net/fashion_man/article/details/82527810
今日推荐