美文网首页
Java温故而知新之ThreadLocal

Java温故而知新之ThreadLocal

作者: 卖梦想的男孩 | 来源:发表于2017-03-03 16:58 被阅读15次

    简单而言就是ThreadLocal为每个Thread提供了一个只属于自己的变量副本,线程针对该变量的修改互不影响。

    从实现上来讲,其内部采用类似HashMap的方式来管理线程与变量的关系,但是不是Map,是他的一个内部类ThreadLocalMap,相当于Map的私人订制版,数据结构采用的数组,根据每个线程的hash值与数组的长度来计算线程位置。

    使用指南

    只要理解了,使用起来还是挺简单的,就4个方法。

    • 数据的初始化
    protected Integer initialValue()
    

    可以在初始化的时候覆写该方法。
    该方法是懒加载的,即只有调用get()使用的时候才判断,如果没有初始化就初始化。
    java1.8还提供了静态方法

     public static <S> ThreadLocal<S> withInitial(Supplier<? extends S> var0)
    
    • 修改值
    void set(Object value)
    
    • 获取值
    public Object get()
    
    • 删除值
    public void remove()
    

    手动释放对象占用的内存,当然线程结束后也可以交给系统来释放。

    相关文章

      网友评论

          本文标题:Java温故而知新之ThreadLocal

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