1.构造方法
2.公有方法
当线程初次调用set()或get()方法时,当前线程并没有其特有的ThreadLocalMap,因而会调用creatMap( t , value )为当前线程创建一个HashMap,该HashMap以其HashCode与当前线程进行绑定。并以ThreadLocal为键,value对象为值,其键值对采用WeakRefference(弱引用)。当前线程结束后,且无其它强引用指向该value值,GC会将value对象进行标记,然后回收。
因此,当用ThreadLocal进行对诸如Connection,Session需要关闭以释放资源的对象管理时,将不需要手动关闭。因为在线程结束时,该对象会被自动回收。
initialValue()可用于对ThreadLocal进行初始的赋值。可以创建类继承ThreadLocal类,并重写initialValue()即可对其进行初始赋值。
set()方法将该参数存入到当前线程的ThreadLocalMap中,若该HashMap不存在则创建并进行赋值。
remove()方法会调用clear()方法,清除当前线程的ThreadLocalMap的键值对的键与值之间的引用,由于该键值对的键与值之间是弱引用,因而该value值对象会被回收。
JDK8新增方法
该方法用于给ThreadLocal赋初始值,类似initialValue()方法,不过有了这个方法之后就不再需要创建类继承ThreadLocal然后重写initialValue()方法。直接调用withInitialValue()方法,并用匿名内部类的形式传入withInitialvalue()中,重写initialvalue()方法即可。