CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

关于struts的多线程问题以及一个简单的socket通信问题

楼主snoopy_milan()2006-03-12 15:00:54 在 Java / Web 开发 提问

struts的多线程理解是这样的:如果一个action同时接收到多个请求,Actionservlet会为每一个请求创建一个action线程,而每一个action中调用其他类的方法的时候,每一个action都有该方法的一个单独拷贝,所以编写Action的时候不存在多线程问题。请问次观点是不是正确。  
   
   
        另外我想写一个小型的压力测试软件,请各位给点意见:  
  1.发给server的包应该包括哪些内容:  
  用httplook可以看到每一个请求内容,包括请求首部,请求体等,类似于  
    GET   /test/test.jsp?id=1&name=tom   HTTP/1.1.   Accept:   image/gif,   image/jpeg,*/*.   Accept-Language:   zh-cn.   Accept-Encoding:   gzip,   deflate.   User-Agent:   Mozilla/4.0   (compatible;   MSIE   5.01;   Windows   NT   5.0)   ...  
  2.如何同时于一个server建立多个skcket连接  
  谢谢  
   
  问题点数:90、回复次数:4Top

1 楼tomuno(特别行动组)回复于 2006-03-12 15:08:43 得分 90

struts是线程安全,并不是指多线程,而是指单态,当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的action类对象,execute方法加上了同步关键字,如果你在action里加上一个全局变量,那么,多个客户访问的时候,这个变量是共有的,即一个客户修改了他,下一个客户获得的变量是修改后的,你可以写个demo来测试,至于多线程只是服务器在相应客户端请求时对于session的处理,并不是指struts   actionTop

2 楼snoopy_milan()回复于 2006-03-13 15:06:30 得分 0

假设一段简单的代码:  
  public   class   LogonAction   extends   Action   {  
      public   ActionForward   execute(ActionMapping   actionMapping,   ActionForm   actionForm,   HttpServletRequest   httpServletRequest,   HttpServletResponse   httpServletResponse)throws   Exception   {  
          LogonForm   logonForm   =   (LogonForm)   actionForm;  
          String   username   =   logonForm.getUsername().trim();  
          String   password   =   logonForm.getPassword().trim();  
          List   userinfo   =   new   ArrayList();           //用户信息  
          try  
            {  
                userinfo   =   logon.adminLogon(userinfo,username,password);  
  //--------省略了数据库连接代码,通过userinfo.size()来判断是否登陆成功.  
  以上代码是否会引起多线程问题,adminLogon使用了局部变量,好像应该没问题,谢谢。  
  Top

3 楼tomuno(特别行动组)回复于 2006-03-13 18:07:30 得分 0

局部变量没有问题,因为在执行一个类对象的方法时,对于每一个请求线程都会有自己的内存拷贝Top

4 楼DanielYWoo(绿色毒汁)回复于 2006-03-14 11:41:34 得分 0

>>execute方法加上了同步关键字  
   
  NO!   no   synchronized   or   sync   block   in   Action.execute().  
  Actions   must   be   programmed   in   a   thread-safe   manner,   because   the   controller   will   share   the   same   instance   for   multiple   simultaneous   requests.   This   means   you   should   design   with   the   following   items   in   mind:Top

相关问题

  • 多线程 用socket通信
  • 多线程SOCKET通信中的问题
  • 多线程socket!!!
  • Socket多线程通信中重连与socket关闭的问题
  • 谁有网络间多线程socket通信的源码?
  • 关于MFC Regular DLL 写的一个SOCKET通信 多线程的问题
  • Socket的多线程问题
  • 多线程SOCKET的问题!
  • 多线程Socket问题~~
  • socket的多线程问题

关键词

  • 多线程
  • 客户
  • struts
  • 请求
  • 变量
  • 问题
  • actions
  • 方法
  • 加上
  • 时候

得分解答快速导航

  • 帖主:snoopy_milan
  • tomuno

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo