一、ThreadLocal的作用
threadLocal又叫做线程本地存储,它不是为了解决线程安全问题的,它是为了让每一个线程都拥有自己独立的变量。
二、ThreadLocal原理
线程类Thread中有一个ThreadLocals变量,它的类型是ThreadLocalMap。
threadLocal就是将自身对象作为key,需要保存的变量作为value,保存到threadLocalMap中。
这样,每一个线程就可以单独保存一个副本。
public T get(){ Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if(map != null){ TreadLocalMap.Entry e = map.getEntry(this); if(e != null){ return (T)e.value; } } return setInitialValue();}
三、应用
可以用在解决数据库连接,session管理中。每一个线程只需要初始化一次连接。