一、servlet是一个供其他java程序调用的java类,比如tomcat服务器,它不能独自运行,它的运行由servlet引擎来控制和调度。
二、servlet是单例,多线程
针对多个客户端访问servlet的情况,servlet只实例化一次,也就是其init()方法只运行一次。
而每次请求,servlet引擎都会创建新的servletrequest和servletresponse相应对象,然后作为参数传递给service()方法,service再根据请求调用doget()或者dopost()
servlet是多线程的。
三、多线程的安全问题
对于全局变量,如果进行高并发的时候,同一个变量,一个线程请求还未执行完,下一个线程请求就来了。
这就造成了,变量的操作出现错误。
比如 对于全局变量 i
当第一个线程取出来,进行i++操作,i++还未执行,下一个线程就到来,也进行i++操作,这样其实i++执行了两次,但最终的结果只是加了1。
要解决这个问题,还是使用了同步的方式,使用synchronized
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/a879365197/article/details/46662593