1. 程式人生 > >學習筆記 --- Java 併發程式設計總結二 ThreadLocal

學習筆記 --- Java 併發程式設計總結二 ThreadLocal

ThreadLocal是什麼

ThreadLocal是一個本地執行緒副本變數工具類。主要用於將私有執行緒和該執行緒存放的副本物件做一個對映,各個執行緒之間的變數互不干擾,在高併發場景下,可以實現無狀態的呼叫,特別適用於各個執行緒依賴不通的變數值完成操作的場景。

下圖為ThreadLocal的內部結構圖

ThreadLocal_thumb4

 

從上面的結構圖,我們已經窺見ThreadLocal的核心機制:

  • 每個Thread執行緒內部都有一個Map。
  • Map裡面儲存執行緒本地物件(key)和執行緒的變數副本(value)
  • 但是,Thread內部的Map是由ThreadLocal維護的,由ThreadLocal負責向map獲取和設定執行緒的變數值。

所以對於不同的執行緒,每次獲取副本值時,別的執行緒並不能獲取到當前執行緒的副本值,形成了副本的隔離,互不干擾。

應用場景:

單例和多執行緒沒有關係,只是單例裡面的變數有多執行緒問題,ThreadLocal

參考:https://www.cnblogs.com/nullzx/p/7553538.html