servlet线程安全问题

来源:互联网 发布:suse linux无法连接ftp 编辑:程序博客网 时间:2024/06/01 20:56

servlet线程安全问题


(1)为什么说servlet会存在线程安全问题

        a.容器在默认情况下,只会创建一个servlet实例(对象)。

        b.容器收到一个请求,就会启动一个线程来处理。

        如果有多个请求同时访问某个servlet,就会有多个线程调用同一个servlet实例,就有可能产生线程安全问题(比如,这些线程要修改servlet的属性)。


    (2)如何解决

        a,加锁

        使用synchronized对有可能产生线程安全问题的代码块加锁。

        注:

            加锁会影响性能。

        b,让一个servlet实现SingleThreadModel接口。(了解)

        容器会为这样的servlet(实现了SingleThreadModel接口)创建多个实例(一个线程一个实例)。

        注:

            因为有可能会产生过多的servlet实例,所以,在比较大型的应用当中,尽量少用。


    (3)jmeter压力测试工具

        可以模拟同时向服务器发多个请求。。。                                        


            

0 0