千鋒教育-做有情懷、有良心、有品質的職業教育機構
ThreadLocal就是一種以**空間換時間**的做法,在每個Thread里面維護了一個以開地址法實現的ThreadLocal.ThreadLocalMap,把數據進行隔離,數據不共享,自然就沒有線程安全方面的問題了
4.1實際通過ThreadLocal創建的副本是存儲在每個線程自己的threadLocals中的;
4.2.為何threadLocals的類型ThreadLocalMap的鍵值為ThreadLocal對象,因為每個線程中可有多個threadLocal變量;
4.3.在進行get之前,必須先set,否則會報空指針異常;
因為在上面的代碼分析過程中,我們發現如果沒有先set的話,即在map中查找不到對應的存儲,則會通過調用setInitialValue方法返回i,而在setInitialValue方法中,有一個語句是T value = initialValue(), 而默認情況下,initialValue方法返回的是null。
4.4 如果想在get之前不需要調用set就能正常訪問的話,必須重寫initialValue()方法。
上一篇
垃圾回收機制(算法原理)相關推薦