问答详情
源自:4-8 接收参数-深入Struts2

关于Action传参问题

如果使用 private String username 这种方式传参数

我的理解是: 多个用户访问时共用一个 Action  ,  此时会不会对 username这个变量产生 多线程的竞态呢?

提问者:藏红 2015-08-15 09:51

个回答

  • Fcming
    2015-08-19 00:07:32

     Struts 2 的 Action 对象为每一个请求产生一个实例,因此,虽然在Action中定义了很多全局变量,也不存在线程安全问题。Struts 2框架在处理每一个用户请求的时候,都建立一个单独的线程进行处理,值栈ValueStack也是伴随着局部线程而存在的。在该线程存在过程中,可以随意访问值栈,这就保证了值栈的安全性。在Struts 2中,ActionContext是一个局部线程,这就意味着每个线程中的ActionContext内容都是唯一的。所以开发者不用担心Action的线程安全。