當需要使用多線程時,有個變量恰巧不需要共享,此時就不必使用synchronized這么麻煩的關鍵字來鎖住,每個線程都相當於在堆內存中開辟一個空間,線程中帶有對共享變量的緩沖區,通過緩沖區將堆內存中的共享變量進行讀取和操作,ThreadLocal相當於線程內的內存,一個局部變量。每次可以對線程自身的數據讀取和操作,並不需要通過緩沖區與 主內存中的變量進行交互。並不會像synchronized那樣修改主內存的數據,再將主內存的數據復制到線程內的工作內存。ThreadLocal可以讓線程獨占資源,存儲於線程內部,避免線程堵塞造成CPU吞吐下降。
在每個Thread中包含一個ThreadLocalMap,ThreadLocalMap的key是ThreadLocal的對象,value是獨享數據。
ps:關注一下本人公眾號,每周都有新更新哦!