Servlet中线程安全问题
一.Servlet什么时候会有线程安全问题
Servlet是单例设计,Servlet是在容器中运行的java类,是Servlet容器加载并创建的实例化对象,之后请求调用service()方法。
如果Servlet中有一个属性,多有请求都会操作这个属性,这时就会有线程安全问题。比如统计某个网站访问次数
private int count = 0; //定义一个属性,如果请求之后,count+1
二.SingleThreadModel模式不能实现多线程安全
因为Servlet是单例模式,实现了SingleThreadModel接口的servlet,每个请求线程都会创建一个servlet实例(在servlet对象池中),比如卖票,则每个实例都有100张票 而多线程是指多个线程使用的是一个实例
三.使用Servlet上下文的Attribute是线程安全的
统计网站访问次数,将次数放入ServletContext的属性中


浙公网安备 33010602011771号