threadLocal又叫作线程本地存储,它不是为了解决线程安全问题的,它是为了让每个线程都拥有本身独立的变量。数据库
线程类Thread中有一个ThreadLocals变量,它的类型是ThreadLocalMap。安全
threadLocal就是将自身对象做为key,须要保存的变量做为value,保存到threadLocalMap中。session
这样,每个线程就能够单独保存一个副本。this
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管理中。每个线程只须要初始化一次链接。线程