美文网首页
ThreadLocal

ThreadLocal

作者: 霄霄霄霄 | 来源:发表于2017-05-17 09:55 被阅读0次

1.构造方法

无参构造方法

2.公有方法

get()方法 get()源码

        当线程初次调用set()或get()方法时,当前线程并没有其特有的ThreadLocalMap,因而会调用creatMap( t , value )为当前线程创建一个HashMap,该HashMap以其HashCode与当前线程进行绑定。并以ThreadLocal为键,value对象为值,其键值对采用WeakRefference(弱引用)。当前线程结束后,且无其它强引用指向该value值,GC会将value对象进行标记,然后回收。

        因此,当用ThreadLocal进行对诸如Connection,Session需要关闭以释放资源的对象管理时,将不需要手动关闭。因为在线程结束时,该对象会被自动回收。

initialValue()方法 initialValue()源码

initialValue()可用于对ThreadLocal进行初始的赋值。可以创建类继承ThreadLocal类,并重写initialValue()即可对其进行初始赋值。

set()方法 set()源码

set()方法将该参数存入到当前线程的ThreadLocalMap中,若该HashMap不存在则创建并进行赋值。

remove()方法 remove()源码

remove()方法会调用clear()方法,清除当前线程的ThreadLocalMap的键值对的键与值之间的引用,由于该键值对的键与值之间是弱引用,因而该value值对象会被回收。

JDK8新增方法

withInitial()方法 withInitial()方法

该方法用于给ThreadLocal赋初始值,类似initialValue()方法,不过有了这个方法之后就不再需要创建类继承ThreadLocal然后重写initialValue()方法。直接调用withInitialValue()方法,并用匿名内部类的形式传入withInitialvalue()中,重写initialvalue()方法即可。

相关文章

网友评论

      本文标题:ThreadLocal

      本文链接:https://www.haomeiwen.com/subject/nsarxxtx.html