ThreadLocal是的作用是提供線程的局部變量。ThreadLocal的核心機制:
- 每個Thread線程內部都有一個Map。ThreadLocalMap(ThreadLocal的靜態類 )
- Map裏面存儲線程本地對象(key)和線程的變量副本(value)
- 但是,Thread內部的Map是由ThreadLocal維護的,由ThreadLocal負責向map獲取和設置線程的變量值。
所以對於不同的線程,每次獲取副本值時,別的線程並不能獲取到當前線程的副本值,形成了副本的隔離,互不干擾。
首先根據Thread.currentThread ()獲取到inheritableThreadLocals(即ThreadLocalMap,他是Thread的一個變量),然後將this(即最上面代碼的dfThreadLocal對象)作爲key(或索引)獲取到真正的值T(就是SimpleDateFormat對象)