ThreadLocal:
ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVariable更容易让人理解一些。
实现思路:在ThreadLocal类中定义了一个ThreadLocalMap类,每一个Thread中都有一个该类型的变量——threadLocals——用于存储每一个线程的变量副本,Map中元素的键为线程对象
其实值还是在Thread的属性threadLocals中存着,只是ThreadLocal内置的实现和访问提供了而已.我们完全可以给Thread添加额外的属性用于存储数据,但是如果线程的开启过程不是由我们控制的,比如web项目中的多用户访问线程,这时ThreadLocals内置实现就很必要了.
Thread.currentThread().和Thread.的区别:
如果是继承Thread则二者效果一样,Thread.其实就是作用于当前Thread的,但是如果实现runnable接口,那么Thread.的方法是不存在的,只能先获取currentThread()然后再"."了.