老是看到不会的问题就像转过来,记录下来,以后好看,一定要看~
struts1中对action实例采取的单例模式,所有的请求都有一个实例来响应,由此引发在多线程环境下线程安全问题。而这个线程安全问题仅仅是针对实例变量来说的,在执行execute时所有线程共享一个实例变量,因此需要用同步来解决线程安全问题,由此可能引起线程等待进而性能下降的问题。对局部变量来说不存在这个问题,因为在每个线程的堆栈上都会拥有各自的局部变量。
struts2和webwork采取的多实例模式,自然能解决线程安全问题,但也是建立在牺牲内存的资源基础上。相对struts1来说,解决内存资源不足应该还是比较好办的。而对于性能的影响我觉得需要建立在大量的访问基础上才能验证那种方式更好,既然struts2和webwork是改进struts1的,我想性能方面肯定会占优势。