servlet线程安全问题
(1)为什么说servlet会存在线程安全问题
a.容器在默认情况下,只会创建一个servlet实例(对象)。
b.容器收到一个请求,就会启动一个线程来处理。
如果有多个请求同时访问某个servlet,就会有多个线程调用同一个servlet实例,就有可能产生线程安全问题(比如,这些线程要修改servlet的属性)。
(2)如何解决
a,加锁
使用synchronized对有可能产生线程安全问题的代码块加锁。
注:
加锁会影响性能。
b,让一个servlet实现SingleThreadModel接口。(了解)
容器会为这样的servlet(实现了SingleThreadModel接口)创建多个实例(一个线程一个实例)。
注:
因为有可能会产生过多的servlet实例,所以,在比较大型的应用当中,尽量少用。
(3)jmeter压力测试工具
可以模拟同时向服务器发多个请求。。。