1.struts是不是已经实现了多线程了?
我是这么想的,根据struts的工作流程,当用户请求一个action时就创建对应action的一个对象去执行相应的方法,当多个用户请求时就是为每一个用户创建了一个对象。这样是不是就相当于实现了多线程了?
2.有没有办法只让action实例化一次?
因为我的action中要把一个文件读到内存中,所以如果为每个请求创建一个对象的话,内存需求一定会不断变大。
3.能不能只读一次所有对象都去用 ?
读取文件也是十分耗时间的,所以能不能只读取一次文件让所有对象都去用?

解决方案 »

  1.   

    你说的是struts1 还是struts2struts1 的action是一个单线程的,只有一个对象
      

  2.   

    struts1 的action好像默认就是创建为单例的
    struts2 的才是多实例的吧,
    在与spring集成的时候可以指定是以单例创建还是多例创建
      

  3.   

    可以。。创建一个静态块。并且判断。就可以了//在struts2里边创建一个静态块
    static
    {
       //内容。
    }
      

  4.   

    是struts2吧,你要想这样话,创建一个静态块就行了.
      

  5.   


    public class LoginAction extends ActionSupport{
    public String execute() throws Exception {
    ReadIndex read=new ReadIndex();
                    .....
    }
    }
    public class ReadIndex{
            static{
                 List list=read();
            }
            //这里可能还要调用其它的类
    }这样话是不是ReadIndex里静态的量只在有action对象存在它就一直在?
    如果ReadIndex里还调用了别的类,并且它调用的这个类里也有静态量,这些静态量也是只要有action对象存在它就存在吧?
    这样做有没有线程安全问题?