Java温故而知新之ThreadLocal

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

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

使用指南

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

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

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

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

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

你可能感兴趣的:(Java温故而知新之ThreadLocal)