Threadlocal is to achieve thread safety by manipulating the copy of variables in different threads, which is the way of exchanging time resources with space resources. Today when looking at Struts2 source code, found in Actioncontext, held a static threadlocal, as follows:
Public class Actioncontext implements Serializable { static ThreadLocal Actioncontext = new ThreadLocal ();}
So speculate on the way struts2 implements thread safety, and uses this method to achieve thread safety by allowing the public variables in the map in Actioncontext to use threadlocal to replicate replicas.
Sync hronized usesa "time-to- space " approach to provide a variable that queues different threads for access. The threadlocal uses a " space -for-time" approach, providing each thread with a copy of the variable to achieve simultaneous access without affecting each other.
To know more, you can refer to http://blog.csdn.net/xrt95050/article/details/7324229
ThreadLocal (about Struts2 's ThreadLocal, actually Jdk1.2)