ThreadLocal類用於創建一個線程本地變數 在Thread中有一個成員變數ThreadLocals,該變數的類型是ThreadLocalMap,也就是一個Map,它的鍵是threadLocal,值為就是變數的副本。通過ThreadLocal的get()方法可以獲取該線程變數的本地副本,在get ...
ThreadLocal類用於創建一個線程本地變數 在Thread中有一個成員變數ThreadLocals,該變數的類型是ThreadLocalMap,也就是一個Map,它的鍵是threadLocal,值為就是變數的副本。通過ThreadLocal的get()方法可以獲取該線程變數的本地副本,在get方法之前要先set,否則就要重寫initialValue()方法。 ThreadLocal的使用場景: 資料庫連接:在多線程中,如果使用懶漢式的單例模式創建Connection對象,由於該對象是共用的,那麼必須要使用同步方法保證線程安全,這樣當一個線程在連接資料庫時,那麼另外一個線程只能等待。這樣就造成性能降低。如果改為哪裡要連接資料庫就來進行連接,那麼就會頻繁的對資料庫進行連接,性能還是不高。這時使用ThreadLocal就可以既可以保證線程安全又可以讓性能不會太低。但是ThreadLocal的缺點時占用了較多的空間。