个人理解ThreadLocal和同步锁相比,前者是牺牲空间节约时间。后者是牺牲时间节约空间。
ThreadLocal为每一个线程访问的变量创建一个属于该线程的副本。而不象是同步锁所有线程先后访问一个变量。
ThreadLocal会判断访问自己对象的线程是否有在该map中有访变量的副本。若存在就使用该副本。若无这创建一个副本。
值得一说的是Common里data中倘若你不通过不同线程给data赋值,那么该data的值只属于改变data的线程。这就是threadlocal的意义所在。当前线程的data值只属于当前线程。