http://www.itdecent.cn/p/98b68c97df9b
ThreadLocal是什么
ThreadLocal是一個(gè)本地線程副本變量工具類。主要用于將私有線程和該線程存放的副本對(duì)象做一個(gè)映射,各個(gè)線程之間的變量互不干擾,在高并發(fā)場(chǎng)景下,可以實(shí)現(xiàn)無(wú)狀態(tài)的調(diào)用,特別適用于各個(gè)線程依賴不同的變量值完成操作的場(chǎng)景。
從數(shù)據(jù)結(jié)構(gòu)入手
下圖為ThreadLocal的內(nèi)部結(jié)構(gòu)圖

ThreadLocal結(jié)構(gòu)內(nèi)部
從上面的結(jié)構(gòu)圖,我們已經(jīng)窺見ThreadLocal的核心機(jī)制:
每個(gè)Thread線程內(nèi)部都有一個(gè)Map。
Map里面存儲(chǔ)線程本地對(duì)象(key)和線程的變量副本(value)
但是,Thread內(nèi)部的Map是由ThreadLocal維護(hù)的,由ThreadLocal負(fù)責(zé)向map獲取和設(shè)置線程的變量值。
所以對(duì)于不同的線程,每次獲取副本值時(shí),別的線程并不能獲取到當(dāng)前線程的副本值,形成了副本的隔離,互不干擾。