通过java.lang.ThreadLocal类,可以实现线程本地存储。
添加操作
1 | public void set(T value) { |
1.getMap(t)的源码如下:
1 | ThreadLocalMap getMap(Thread t) { |
2.声明threadLocals变量的源码如下:
1 | public class Thread implements Runnable { |
3.第一次向当前线程中存放数据时,将执行createMap()方法,创建ThreadLocal.ThreadLocalMap对象。
1 | void createMap(Thread t, T firstValue) { |
取值操作
1 | public T get() { |
1.如果当前线程中没有存放过数据(实例变量threadLocals尚未初始化),或者在哈希表中没有找到该项,则执行setInitialValue()方法,源码如下:
1 | private T setInitialValue() { |
2.方法initialValue()的源码如下:
1 | // 默认值为null,如果需要自定义默认值,只需重写该方法即可 |
删除操作
1 | public void remove() { |