由于默认情况下Servlet,在内存中只有一个实例对象,当多个浏览器并发访问Servlet时就有可能产生线程安全问题
解决方案:
1、加锁--效率降低 synchronized(this){ }
2、SingleThreadModel接口 -- 不能真的防止线程安全问题
在服务器的内部维护一个对象池,放servlet的对象,一个请求过来,会到池里检查一下有没有这个servlet,如果没有,创建一个给当前线程使用,使用完的就放回池里。如果第一个线程使用的servlet对象还没有还回池里,第二线程过来就会再创建一个servlet对象,两个servlet对象会随机被选中给第三个线程使用。
3、最终解决方案:
在Servlet中尽量少用类变量,如果一定要用类变量则用锁来防止线程安全问题,但是要注意锁住内容应该是造成线程安全问题的核心代码,尽量的少锁主内容,减少等待时间提高servlet的响应速度。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。