当前位置:  编程技术>java/j2ee

编写线程安全的JSP程序

    来源: 互联网  发布时间:2014-10-14

    本文导语:  作者:徐春金JSP默认是以多线程方式执行的,这是JSP与ASP,PHP,PERL等脚本语言不一样的地方,也是它的优势之一,但如果不注意多线程中的同步问题,会使所写的JSP程序有难以发现的错误。下面以一个例子说明JSP中的多线程问...

作者:徐春金

JSP默认是以多线程方式执行的,这是JSP与ASP,PHP,PERL等脚本语言不一样的地方,也是它的优势之一,但如果不注意多线程中的同步问题,会使所写的JSP程序有难以发现的错误。下面以一个例子说明JSP中的多线程问题及解决方法。

一、JSP的中存在的多线程问题:

当客户端第一次请求某一个JSP文件时,服务端把该JSP编译成一个CLASS文件,并创建一个该类的实例,然后创建一个线程处理CLIENT端的请求。如果有多个客户端同时请求该JSP文件,则服务端会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.对JSP中可能用的的变量说明如下:

  • 实例变量
    实例变量是在堆中分配的,并被属于该实例的所有线程共享,所以不是线程安全的.
  • JSP系统提供的8个类变量
    JSP中用到的OUT,REQUEST,RESPONSE,SESSION,CONFIG,PAGE,PAGECONXT是线程安全的,APPLICATION在整个系统内被使用,所以不是线程安全的.
  • 局部变量
    局部变量在堆栈中分配,因为每个线程都有它自己的堆栈空间,所以是线程安全的.
  • 静态类
    静态类不用被实例化,就可直接使用,也不是线程安全的.
  • 外部资源:
    在程序中可能会有多个线程或进程同时操作同一个资源(如:多个线程或进程同时对一个文件进行写操作).此时也要注意同步问题.
  • 二、下面的例子存在的多线程问题:


     



        
     
     

    您可能感兴趣的文章:

  • 如何编写支持超线程的Linux程序
  • 【在线等】在编写多线程遇到了问题,哥们,帮个忙,急得不行了
  • tc 下面,中断函数的编写及线程的调度!
  • 怎样用线程编写个定时器
  • 用Qt3.1.4编写的程序,如何加入自己编写的另外一个动态库呀?诚恳指教!!
  • 用jsp编写web程序到底和java serverlet编写web程序有和区别
  • 编写程序如编写人生,有人和我的意见相同吗?
  • 求教:编写一个bash脚本程序执行一个./file 程序
  • 学了linux程序设计后能不能编写出应用程序
  • 编写连接数多的服务器程序用什么程序结构比较好呢?
  • 请问用jsp编写程序,非要编写代码么?有没有什么象fontpage2000那样的工具,能够生成一些固定模板的工具?就是说不用全部都写的工具。望
  • 客户端程序与容器打交道时客户端用什么程序编写?比如银行添单。
  • 如何编写服务程序,执行后返回到shell,但程序在后台运行?
  • 在linux上怎么编写一个模块来提供某个中断的中断处理程序呢?而且有哪些中断可以自己添加中断处理程序呢?
  • java能不能编写单独运行的程序?
  • daemon程序的编写以及如何退出daemon程序?
  • 怎么用JBuild编写java console程序
  • 请问用jb7编写的程序是否可以超平台,即在win下写的程序是否可以在linux下运行?
  • 怎么编写后台程序?
  • 在windows下可以用Code::Blocks编写linux程序吗?
  • 我是编写ASP程序的,现在想学JAVA程序,请介绍几本入门书!提者有分!
  • linux下用java编写邮箱客户端程序与在windows下有什么不同??
  • 用GTK编写的程序程序,在我的机器上能用,并生成了可执行文件,可是!
  • 如何编写EJB的客户端程序?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 编写 linux shell 有什么好的编写工具呢?
  • VB编写的DLL不能被JAVA调用,用C将VB编写的DLL包装起来,做成一个新的DLL;用C编写的DLL可以被JAVA调用,用JAVA再进行一层的包装,因为JAV
  • 如图 scsi <---> scsi controller <---> pci <---> cpu 如果我想对scsi编写驱动我该对哪个部分编写?
  • 用什么工具编写JSP,可以象用InterDev编写ASP一样方便快捷?
  • socket中,从client端(用java编写的)传到server端(用c编写的)的字符串为何总多一个ASCII码为10的字符呀?
  • 如何用java编写一个NT平台下的标准服务?
  • 关于用vj编写sniffer一问。
  • Linux下如何编写脚本文件
  • Linux有没有类似bat文件,如何编写。
  • 用JAVA编写COM组件
  • 关于版本和bug管理的rule(规则)的编写
  • 函数互相调用时Makefile编写
  • AIX下如何编写批处理命令和计划任务
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • 在C++程序中编写Lisp代码 InteLib
  • C和汇编编写的32位内核 ScorchOS
  • 快速编写HTML/CSS代码 Emmet
  • 用jsp 编写下拉或弹出式菜单
  • 使用editplus编写java如何编译成字节码文件,如何解释
  • 请问java用什么工具编写?在哪里运行?我刚开始学,不太懂,谢谢了


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3