谈谈对 ThreadLocal 的理解?

1、Java 的 Web 项目大部分都是基于 Tomcat。每次访问都是一个新的线程,每一个线程都独享一个 ThreadLocal,我们可以在接收请求的时候 set 特定内容,在需要的时候 get 这个值。

2、 ThreadLocal 提供 get 和 set 方法,为每一个使用这个变量的线程都保存有一份独立的副本。

public T get() {...}
public void set(T value) {...}
public void remove() {...}
protected T initialValue() {...}

1、get() 方法是用来获取 ThreadLocal 在当前线程中保存的变量副本;

2、set() 用来设置当前线程中变量的副本;

3、 remove() 用来移除当前线程中变量的副本;

4、 initialValue() 是一个 protected 方法,一般是用来在使用时进行重写的,如果在没有 set 的时候就调用 get,会调用 initialValue 方法初始化内容。

发表评论