Java温故而知新之ThreadLocal

2017-03-03  本文已影响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()

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

上一篇下一篇

猜你喜欢

热点阅读