public T get(){
Thread t = Thread.currentThread();
ThreadLocal.ThreadLocalMap map =this.getMap(t);if(map != null){
ThreadLocal.ThreadLocalMap.Entry e = map.getEntry(this);if(e != null){
T result = e.value;return result;}}returnthis.setInitialValue();//setInitialValue为初始化对象,set没有赋值默认调用}
publicvoidremove(){
ThreadLocal.ThreadLocalMap m =this.getMap(Thread.currentThread());if(m != null){
m.remove(this);}}
4. protected T initialValue():主要用于初始化,是一个protected的方法,主要用于让子类覆写,在线程第1次调用 get() 或 set() 时执行,只执行1次,返回的值为null。
源码:
protected T initialValue(){return null;}
方法实际的应用:
classTest{privatestaticfinal ThreadLocal<String> local =newThreadLocal<>();publicvoidtest(){
local.set("Hello World");//设置值
System.out.println(local.get());//获取值
local.remove();//删除值
System.out.println(local.get());//获取值}}publicclassDemo02{publicstaticvoidmain(String[] args){
Test test =newTest();
test.test();}}