比如现在有个Action,叫CZaction,有很多用户会访问这个action,这个action有对数据库操作,用线程Thread.sleep(1000);睡眠一秒才返回给用户。我有这些疑问:1.如果很多用户访问这个action,睡眠线程会不会导致返回的action混乱?就是本来是返回给a的却返回给b了?
  2.如果不用mapping.findForward()到其他页面,用response.getWriter().print();它是否会返回给正确的访问者?就是一个访问者对应一个它自己的response.getWriter().print();???

解决方案 »

  1.   

    不是吧
    虽然action是单态的,但是你每一次action请求的都是对同一个action,相当于调用同一个实例的同一个方法,但是方法参数request和response是不同,所以这样是没问题的
      

  2.   


    那你的意思是不会导致这些冲突?如果我对这个action非常频繁的访问?
      

  3.   

    你想过的问题人家Struts早就给你想好了!!不然是优秀的框架吗?可以看看源码怎么处理的!!如果你真要用线程的话,在方法级别加一个syncronized呗。
      

  4.   


    我是要用线程等待,
    但我不知道如果Thread.sleep(1000);这样的话会不会导致n多个线程在跑?
      

  5.   

    struts1的Action实例是非线程安全的,所以Action类中通常不允许定义全局变量,因为该全局变量会被所有线程所共享,如果你的Action类中没定义有全局变量就不用担心线程安全的问题。
      

  6.   

    struts1的Action实例是非线程安全的,这个线程不安全,就是不要定义全局变量啊?如果局部的那应该都没问题吧。
      

  7.   


    这个应该是正确的,因为struts1中的action是单例的,如果有全局变量的话,在高并发访问的时候,
    全局变量就会发生混乱。