当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:16:00  来源:本站整理

深化研究Servlet线程安全性问题[Java编程]

赞助商链接



  本文“深化研究Servlet线程安全性问题[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

择要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模子阐明惹起Servlet线程不安全的缘由,给出了保证Servlet线程安全的三种办理筹划,并阐明三种筹划在实际开辟中的取舍.

关键字:Servlet 线程安全 同步 Java内存模子 实例变量

Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的履行效率.由于Servlet/JSP默许是以多线程情势履行的,所以,在编写代码时需求非常具体地考虑多线程的安全性问题.但是,很多人编写Servlet/JSP程序时并没有注意到多线程安全性的问题,这常常造成编写的程序在少量用户拜候时没有任何问题,而在并发用户上升到一定值时,就会常常呈现一些莫明其妙的问题.

Servlet的多线程机制

Servlet体系构造是成立在Java多线程机制之上的,它的生命周期是由Web容器负责的.当客户端第一次恳求某个Servlet时,Servlet容器将会按照web.xml配置文件实例化这个Servlet类.当有新的客户端恳求该Servlet时,普通不会再实例化该Servlet类,也就是有多个线程在利用这个实例.Servlet容器会自动利用线程池等技术来支持系统的运行,如图1所示.

图1 Servlet线程池

这样,当两个或多个线程同时拜候同一个Servlet时,大概会发生多个线程同时拜候同一资源的情形,数据大概会变得不一致.所以在用Servlet构建的Web利用时假如不注意线程安全的问题,会使所写的Servlet程序有难以发现的错误.

Servlet的线程安全问题

Servlet的线程安全问题主如果由于实例变量利用不当而惹起的,这里以一个实际的例子来阐明.

Import javax.servlet. *;
Import javax.servlet.http. *;
Import java.io. *;
Public class Concurrent Test extends HttpServlet {PrintWriter output;
Public void service (HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {String username;
Response.setContentType ("text/html; charset=gb2312");
Username = request.getParameter ("username");
Output = response.getWriter ();
Try {Thread. sleep (5000); //为了突出并发问题,在这设置一个延时
} Catch (Interrupted Exception e){}
output.println("用户名:"+Username+"<BR>");
}
}

该Servlet中定义了一个实例变量output,在service办法将其赋值为用户的输出.当一个用户拜候该Servlet时,程序会正常的运行,但当多个用户并发拜候时,便大概会呈现别的用户的信息显示在别的一些用户的浏览器上的问题.这是一个严重的问题.为了突出并发问题,便于测试、察看,我们在回显用户信息时履行了一个延时的操作.假定已在web.xml配置文件中注册了该Servlet,现有两个用户a和b同时拜候该Servlet(可以启动两个IE浏览器,大概在两台机械上同时拜候),即同时在浏览器中输入:

a: http://localhost: 8080/servlet/ConcurrentTest? Username=a

b: http://localhost: 8080/servlet/ConcurrentTest? Username=b

假如用户b比用户a回车的时间稍慢一点,将得到如图2所示的输出:

图2 a用户和b用户的浏览器输出


  以上是“深化研究Servlet线程安全性问题[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 深化研究Servlet线程安全性问题
  • 类的深化研究
  • Java虚拟机深化研究
  • Java中"非常机制"深化研究
  • <b>顺服Tiger: 深化研究摆列典范</b>
  • <b>关于DHCP服务器弊端的深化研究</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .