Servlet中线程安全问题

一.Servlet什么时候会有线程安全问题

  Servlet是单例设计,Servlet是在容器中运行的java类,是Servlet容器加载并创建的实例化对象,之后请求调用service()方法。

  如果Servlet中有一个属性,多有请求都会操作这个属性,这时就会有线程安全问题。比如统计某个网站访问次数

  private int count = 0; //定义一个属性,如果请求之后,count+1

二.SingleThreadModel模式不能实现多线程安全

  因为Servlet是单例模式,实现了SingleThreadModel接口的servlet,每个请求线程都会创建一个servlet实例(在servlet对象池中),比如卖票,则每个实例都有100张票  而多线程是指多个线程使用的是一个实例

三.使用Servlet上下文的Attribute是线程安全的

  统计网站访问次数,将次数放入ServletContext的属性中

 

posted @ 2018-03-15 10:59  姚和尚  阅读(120)  评论(0)    收藏  举报