threadlocal是什么呢?其实threadlocal并非是个线程的本地实现版本,他并不是个thread,而是thread local variable(线程局部变量)。也许把他命名为threadlocalvar更加合适。线程局部变量(threadlocal)其实的功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都能独立地改动自己的副本,而不会和其他线程的副本冲突。从线程的角度看,就似乎每一个线程都完全拥有该变量。线程局部变量并不是java的新发明,在其他的一些语言编译器实现(如ibm xl fortran)中,他在语言的层次提供了直接的支持。因为java中没有提供在语言层次的直接支持,而是提供了一个threadlocal的类来提供支持,所以,在java中编写线程局部变量的代码相对比较笨拙,这也许是线程局部变量没有在java中得到非常好的普及的一个原因吧。