ThreadLocal(关于struts2的ThreadLocal,实际上Jdk1.2就有了)

Posted 麦子TMAC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ThreadLocal(关于struts2的ThreadLocal,实际上Jdk1.2就有了)相关的知识,希望对你有一定的参考价值。

ThreadLocal是通过在不同线程中操作变量的副本,来达到线程安全的目的,是用空间资源换时间资源的方式。今天在看struts2源码的时候,发现ActionContext中,就持有一个静态的ThreadLocal,如下:

 public class ActionContext implements Serializable { static ThreadLocal actionContext = new ThreadLocal();} 

所以推测一下struts2实现线程安全的方式也采用了这种方法,通过让ActionContext中的map中的公共变量,采用ThreadLocal去复制副本的方式去达到线程安全

同步机制(synchronized)采用了“以时间换空间”的方式,提供一份变量,让不同的线程排队访问。而ThreadLocal采用了“以空间换时间”的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而互不影响。

想要知道更多,可以参考http://blog.csdn.net/xrt95050/article/details/7324229

以上是关于ThreadLocal(关于struts2的ThreadLocal,实际上Jdk1.2就有了)的主要内容,如果未能解决你的问题,请参考以下文章

ThreadLocal变量

ThreadLocal相关

ThreadLocal源码分析

源码分析--ThreadLocal(图解)

学习Struts2框架之下册

ThreadLocal和单例对象比较