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



原文地址:https://www.cnblogs.com/zfyouxi/p/5235095.html