servlet基本概念
一、servlet是一个供其它java程序调用的java类,比方tomcatserver,它不能独自执行,它的执行由servlet引擎来控制和调度。
二、servlet是单例,多线程
针对多个client訪问servlet的情况,servlet仅仅实例化一次,也就是其init()方法仅仅执行一次。
而每次请求,servlet引擎都会创建新的servletrequest和servletresponse对应对象,然后作为參数传递给service()方法。service再依据请求调用doget()或者dopost()
servlet是多线程的。
三、多线程的安全问题
对于全局变量,假设进行高并发的时候,同一个变量。一个线程请求还未运行完,下一个线程请求就来了。
这就造成了,变量的操作出现错误。
比方 对于全局变量 i
当第一个线程取出来,进行i++操作。i++还未运行,下一个线程就到来,也进行i++操作,这样事实上i++运行了两次。但终于的结果仅仅是加了1。
要解决问题,还是使用了同步的方式。使用synchronized