Struts2的学习——9.ThreadLocal和ActionContext

9.ThreadLocal和ActionContext

  1. ThreadLocal该类提供了线程局部(thread-local)变量,这些变量不同于他们普通对应物,因为访问某个变量(通过其get和set方法)每个线程都有自己的局部变量,他独立于变量的初始化副本。ThreadLocal实例通常是类中的private static 字段,他们希望将状态与某一个线程(例如,用户ID或者事务ID)相关联。ThreadLocal是一个容器,存放在该容器中的数据是线程安全的。测试其线程安全的代码截图如下。

Struts2的学习——9.ThreadLocal和ActionContext
2. ActionContext是struts2的上下文对象,它本质就是一个容器,也是一个Map结构的对象,ActionContext贯穿于整个Action的执行生命周期,每次接收请求后都会新建一个ActionCntext对象,将ServletAPI中的数据存入到ActionContext中,实现了Struts2和Servlet的解耦,使得测试可以不依赖于容器,而且ActionContext是线程安全的,由于每次请求都重新创建ActionContext对象,导致执行效率比servlet更低。
Struts2的学习——9.ThreadLocal和ActionContext