乙份通俗易懂的ThreadLocal筆記

2021-10-04 23:53:50 字數 993 閱讀 9468

thread類中有個屬性threadlocals,這個引數包含著執行緒的所有成員變數。我們發現thread並沒有提供成員變數threadlocals的設定與訪問的方法,那麼每個執行緒的例項threadlocals引數我們如何操作?這時候就需要用threadlocal來實現了。

總結來說:threadlocal是執行緒thread中屬性threadlocals的管理者。

抽象比喻如下:

1.每個人都有一張銀行卡。

2.每個人每張卡都有一定的餘額。

3.每個人獲取銀行卡餘額都必須通過該銀行的管理系統。

4.每個人都只能獲取自己卡持有的餘額資訊,其他的人不可以訪問。

對映到threadlocal:

1.card類似於thread;

2.card餘額屬性,卡號屬性等類似於threadlocal內部屬性集合threadlocals;

3.cardmanager類似於threadlocal管理類。

首先補充乙個知識點:

由於threadlocalmap中的entry中的key是弱引用,當每次gc時jvm會主動將無用的弱引用**掉,因此threadlocal外部沒有強引用依賴時,就會被自動**,這樣就可能造成threadlocal被**時,相當於將map中的key設定為null,但問題是該key對應的entry和value並不會主動被gc**。

當entry和value未被主動**時,除非當前執行緒死亡,否則執行緒對於entry的強引用會一直存在,從而導致記憶體洩漏。

解決方法:

threadlocal使用後務必呼叫remove方法。

如何編寫乙份通俗易懂的實施文件

對於產品開發人員來說,大多數人想必都寫過產品實施文件,主要內容便是對如何安裝和配置我們開發的產品進行說明,其面向的人群主要是我們的產品實施人員,而不是直接的使用者,一般會準備單獨的產品說明書作為對產品整體的乙個介紹,其中包括需求說明,同時也含有基本的操作等。不難看出,產品實施文件的編寫主要側重點是如...

通俗易懂的C STL

泛型程式設計 generic programming 是一種語言機制,通過它可以實現乙個標準的容器庫。像類一樣,泛型也是一種抽象資料型別,但是泛型不屬於物件導向,它是物件導向的補充和發展。泛型程式設計在c 上的應用主要體現在兩方面 函式模板和類模板。接下來舉個栗子 csdn部落格 anyway,模板...

通俗易懂的CRC校驗

1.crc校驗原理 crc校驗原理看起來比較複雜,好難懂,因為大多數書上基本上是以二進位制的多項式形式來說明的。其實很簡單的問題,其根本思想就是先在要傳送的幀後面附加乙個數 這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同 生成乙個新幀傳送給接收端。當然,這個附加的數不是隨意的,...