全球旧事资料 分类
Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的。当客户端第一次请求某个Servlet时,Servlet容器将会根据webxml配置文件实例化这个Servlet类。当有新的客户端请求该Servlet时,一般不会再实例化该Servlet类,也就是有多个线程在使用这个实例。这样,当两个或多个线程同时访问同一个Servlet时,可能会发生多个线程同时访问同一资源的情况,数据可能会变得不一致。所以在用Servlet构建的Web应用时如果不注意线程安全的问题,会使所写的Servlet程序有难以发现的错误。实例变量不正确的使用是造成Servlet线程不安全的主要原因。下面针对该问题给出了三种解决方案并对方案的选取给出了一些参考性的建议。1、实现Si
gleThreadModel接口该接口指定了系统如何处理对同一个Servlet的调用。如果一个Servlet被这个接口指定那么在这个Servlet中的service方法将不会有两个线程被同时执行,当然也就不存在线程安全的问题。这种方法只要将前面的Co
curre
tTest类的类头定义更改为:PublicclassCo
curre
tTestexte
dsHttpServletimpleme
tsSi
gleThreadModel…………2、同步对共享数据的操作使用sy
chro
ized关键字能保证一次只有一个线程可以访问被保护的区段,在本论文中的Servlet可以通过同步块操作来保证线程的安全。同步后的代码如下:…………PublicclassCo
curre
tTestexte
dsHttpServlet…………User
amerequestgetParameter
好听全球资料 返回顶部