Java併發之ThreadLocal源碼分析(第四篇:刪除)

remove方法用於刪除當前線程中緩存的以ThreadLocal對象爲key的線程局部變量對象

 

0、無參

     public void remove() {
         ThreadLocalMap m = getMap(Thread.currentThread());
         if (m != null)
             m.remove(this);
     }

獲取當前Thread對象持有的ThreadLocalMap對象,並賦值給臨時變量m進行臨時存儲,若獲取成功,則會將當前ThreadLocal對象傳入到ThreadLocalMap的remove方法中,該方法會移除以ThreadLocal對象爲key的元素,若當前Thread對象還未創建持有的ThreadLocalMap對象,此時m爲null,就什麼也不做,方法結束

 

總結

a、remove線程局部變量對象,就是remove在Thread對象持有的ThreadLocalMap對象中的元素,可見ThreadLocalMap對象是多麼重要,ThreadLoca對象完全依賴ThreadLocalMap對象進行緩存線程局部變量對象

b、remove方法很友好,即便ThreadLocalMap對象還未初始化,也沒關係,當你不需要線程局部變量對象的時候,請愉快的使用remove即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章