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管理中。每個線程只須要初始化一次鏈接。線程