在默认情况下,容器只会为每一个servlet创建一个实例,当多个请求到达容器时,就会产生多个线程同时访问一个实例的情况,会产生线程安全性问题
解决方法:
1.为Service方法或代码块加上锁;
2.给servlet实现SingleThreadModle接口,
容器会为实现该接口的servlet创建多个实例即一个线程分配一个。
这种方式创建了过多的servlet实例,系统开销多
3.servlet的属性尽量设为只读
本文讨论了Servlet在多线程环境下可能遇到的线程安全问题,并提供了三种解决方案:使用锁保护共享资源、实现SingleThreadModel接口确保线程安全,以及将Servlet属性设置为只读。
在默认情况下,容器只会为每一个servlet创建一个实例,当多个请求到达容器时,就会产生多个线程同时访问一个实例的情况,会产生线程安全性问题
解决方法:
1.为Service方法或代码块加上锁;
2.给servlet实现SingleThreadModle接口,
容器会为实现该接口的servlet创建多个实例即一个线程分配一个。
这种方式创建了过多的servlet实例,系统开销多
3.servlet的属性尽量设为只读
521
6253

被折叠的 条评论
为什么被折叠?