servlet的线程安全问题
(1)产生线程安全问题的原因:
默认情况下,某个Servlet在容器当中,只有一个
实例(不管有多少个请求)。
如果有多个请求到达容器,容器会启动多个线程
来处理请求,此时,就有可能多个线程会同时访问
某个servlet实例,如果这些线程访问了线程不安全的
资源(比如修改了servlet的某个属性值),就会产
生线程安全问题。
(2)如何解决?
a, 使用synchronized加锁,不要对整个
service方法加锁,而是对访问临界资源的
代码加锁。
b, 让servlet实现SingleThreadModel接口。
容器会为实现了这个接口的servlet创建多个实例。
不建议使用。
c, 尽量避免对servlet属性值进行修改。
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 |