ThreadLocal是什么
ThreadLocal是一個本地線程副本變量工具類。主要用于將私有線程和該線程存放的副本對象做一個映射,各個線程之間的變量互不干擾,在高并發場景下,可以實現無狀態的調用,特別適用于各個線程依賴不通的變量值完成操作的場景。
下圖為ThreadLocal的內部結構圖

從上面的結構圖,我們已經窺見ThreadLocal的核心機制:
-
每個Thread線程內部都有一個Map。
-
Map里面存儲線程本地對象(key)和線程的變量副本(value)
-
但是,Thread內部的Map是由ThreadLocal維護的,由ThreadLocal負責向map獲取和設置線程的變量值。
所以對于不同的線程,每次獲取副本值時,別的線程并不能獲取到當前線程的副本值,形成了副本的隔離,互不干擾。
基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
-
項目地址:https://github.com/YunaiV/ruoyi-vue-pro
-
視頻教程:https://doc.iocoder.cn/video/
ThreadLocalMap

ThreadLocalMap是ThreadLocal的內部類,沒有實現Map接口,用獨立的方式實現了Map的功能,其內部的Entry也獨立實現。
和HashMap的最大的不同在于,ThreadLocalMap結構非常簡單,沒有next引用,也就是說ThreadLocalMap中解決Hash沖突的方式并非鏈表的方式,而是采用線性探測的方式。(ThreadLocalMap如何解決沖突? )
在ThreadLocalMap中,也是用Entry來保存K-V結構數據的。但是Entry中key只能是ThreadLocal對象,這點被Entry的構造方法已經限定死了。
staticclassEntryextendsWeakReference<ThreadLocal>{
/**ThevalueassociatedwiththisThreadLocal.*/
Objectvalue;
Entry(ThreadLocalk,Objectv){
super(k);
value=v;
}
}
注意了!!
Entry繼承自WeakReference(弱引用,生命周期只能存活到下次GC前),但只有Key是弱引用類型的,Value并非弱引用。(問題馬上就來了)
由于ThreadLocalMap的key是弱引用,而Value是強引用。這就導致了一個問題,ThreadLocal在沒有外部對象強引用時,發生GC時弱引用Key會被回收,而Value不會回收。
當線程沒有結束,但是ThreadLocal已經被回收,則可能導致線程中存在ThreadLocalMap
的鍵值對,造成內存泄露。(ThreadLocal被回收,ThreadLocal關聯的線程共享變量還存在)。
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等功能
-
項目地址:https://github.com/YunaiV/yudao-cloud
-
視頻教程:https://doc.iocoder.cn/video/
如何避免泄漏
為了防止此類情況的出現,我們有兩種手段。
1、使用完線程共享變量后,顯示調用ThreadLocalMap.remove
方法清除線程共享變量;
既然Key是弱引用,那么我們要做的事,就是在調用ThreadLocal的get()
、set()
方法時完成后再調用remove方法,將Entry節點和Map的引用關系移除,這樣整個Entry對象在GC Roots分析后就變成不可達了,下次GC的時候就可以被回收。
2、JDK建議ThreadLocal定義為private static
,這樣ThreadLocal的弱引用問題則不存在了。
審核編輯 :李倩
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
原文標題:ThreadLocal 搭配線程池使用造成內存泄漏的原因和解決方案
文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。
相關推薦
電子發燒友網報道(文/莫婷婷)近年來,AI技術的迅猛發展催生了芯片增量市場,為模擬芯片企業帶來了新的增長曲線。電子發燒友網整理了模擬芯片企業艾為電子、芯海科技、必易微、賽微微電的2024年財報看到,他們均受益于市場需求的增長,特別是在高性能數模混合信號、電源管理、信號鏈等領域。這些企業不僅在傳統業務領域取得了顯著增長,還積極布局AI技術,以應對新興的市場需求和技術挑戰。 ? ? 圖:2024年模擬芯片企業業績情況/億元 ?
發表于 04-16 00:18
?235次閱讀
電子發燒友網報道(文/梁浩斌)近日,由西湖大學孵化的西湖儀器成功實現12英寸碳化硅襯底激光剝離自動化解決方案,大幅降低損耗,提升加工速度,推進了碳化硅行業的降本增效。 ? 碳化硅產業當前主流的晶圓尺寸是6英寸,并正在大規模往8英寸發展,在最上游的晶體、襯底,業界已經具備大量產能,8英寸的碳化硅晶圓產線也開始逐漸落地,一些頭部的襯底廠商已經開始批量出貨。 ? 而在去年11月,天岳先進一鳴驚人,發布了行業首款12英寸N型碳化
發表于 04-16 00:24
?194次閱讀
電子發燒友網報道(文 / 黃山明)隨著儲能系統日趨復雜,儲能產品的種類與數量持續攀升。儲能系統需要實時采集電池電壓、溫度、電流等關鍵參數,這就要求具備專門的數據處理功能,以降低云端延遲,提高響應速度。 ? 在此背景下,邊緣計算芯片應運而生。在一些本地化智能決策場景中,例如電網通信中斷的情況,或者在偏遠地區(如無基站覆蓋的儲能電站),邊緣計算芯片能夠支持離線自主控制(如虛擬同步機慣量支撐、離網模式切換),確保
發表于 04-16 00:22
?201次閱讀
電子發燒友網綜合報道? 最近在OFC2025(光網絡與通信研討會及博覽會)上,Coherent展示了業界首款400 Gb/s差分電吸收調制激光器(D-EML),Coherent表示,這意味著數據中心高速光纖網絡技術的重大進步。 ? 差分電吸收調制激光器(Differential Electro-Absorption Modulated Laser,下稱D-EML)是傳統電吸收調制激光器(EML)的一種改進設計,通過引入差分信號驅動技術優化性能,廣泛應用于高速光通信領域。 ? 在光模塊中,差分EML同時承擔激光發射與高速信號調制的作用
發表于 04-16 00:21
?196次閱讀
2025年4月,TE Connectivity(泰科電子,簡稱“TE”)亮相2025慕尼黑上海電子展W3-505展位。以“贏領智電,乘勢敏行”為主題, TE重磅發布用于汽車低壓載流導線的鋁材連接技術革新 ,并圍繞多項智電化趨勢下的核心應用深度協同產業創新,乘勢引領多贏未來。 TE汽車事業部中國區副總裁 兼 總經理孫曉光表示: “此次‘鋁代銅’創新是繼2024年‘0.19mm2多贏復合線’低壓信號回路材料革新后的又一次成功方法學的延續。搭配新一代低壓鋁芯載流線技術,TE預估
發表于 04-15 19:08
?248次閱讀
全球領先的MLCC(多層陶瓷電容器)制造商 宇陽科技(展位號:N1.529) 今日亮相2025年 上海慕尼黑電子 展(electronica?China) 。作為亞洲電子行業的風向標,本屆上海慕尼黑電子展匯聚了來自全球的頂尖企業,覆蓋半導體、被動元件、物聯網等前沿領域。展會現場人流如織,專業觀眾與展商熱烈互動,共同探討電子產業的最新趨勢與技術突破。宇陽科技攜旗下多款MLCC新產品來到展會現場,吸引了眾多海內外行業客戶、合作伙伴及媒體駐足交流,成為展會
發表于 04-15 19:03
?87次閱讀
4 月 14 日消息,高德地圖今日宣布推出基于地圖的 AI 導航智能體(NaviAgent)。據技術負責人介紹,其核心架構采用 Planner-Executor 模式,通過感知、規劃、執行、表達四大模塊構建智能閉環,集成多項高德核心技術。 官方表示,該智能體“更像經驗豐富的‘老司機’”,能實時感知路況、預判風險并主動調整策略。據IT之家了解,以高速駕車場景為例,其支持通過感知車道級交通流變化、動態事件、事故占道等信息,結合用戶路線,AI 導航智能體會自動開
發表于 04-15 18:28
?96次閱讀
美國芯片制造商安森美(Onsemi)周一終止了以 69 億美元收購規模較小的競爭對手 Allegro MicroSystems 的報價,結束了長達數月的競購,安森美希望利用市場低迷來擴大其在汽車行業的影響力。 今年 3 月份,Allegro?曾表示,Onsemi 提出的每股 35.10 美元的收購報價“不夠”,而就在幾個月前,Onsemi 還拒絕了后者每股 34.50 美元的收購提議。 Onsemi?首席執行官 Hassane El-Khoury 表示:“鑒于 Allegro 董事會不愿充分參與和探討我們的提議,我們決定撤回收購提議。”
發表于 04-15 18:27
?234次閱讀
在探討電機控制中IGBT(絕緣柵雙極性晶體管)驅動為何需要隔離的問題時,我們首先要了解IGBT的基本工作原理及其在電機控制中的應用,進而分析隔離技術在其中的重要性。 IGBT是一種結合了MOS柵器件結構與雙極性晶體管特性的復合型功率開關器件,兼具功率MOSFET的高速、高輸入阻抗與雙極性晶體管的低導通電阻性能。這使得IGBT在高壓、大電流功率變換應用中成為主要的功率半導體器件。在電機控制器中,IGBT的主要作用是將直流電轉換為交流電,以驅動
發表于 04-15 18:27
?62次閱讀
? 西北大學張欣、楊逢春團隊與西安建筑科技大學于莎教授 合作,基于仿生攀巖魚皮膚的六邊形微結構,創新設計出Janus織物(HMJ-FT),并成功構建可穿戴電化學傳感器(HMJ-Sensor)。該傳感器通過六邊形微腔與垂直Janus通道協同作用,實現尿液高效定向傳輸,同時精準檢測多巴胺(DA)和尿酸(UA),且經彎折、摩擦、水洗及長期存儲后性能穩定。 背景介紹 隨著醫療保健需求的增長,可穿戴電化學傳感器憑借便攜性、非侵入性等優勢,成為生理信息監測
發表于 04-15 18:26
?57次閱讀
在現代科技的廣闊天地中,光學傳感器如同一雙雙敏銳的“眼睛”,無處不在地捕捉著光線中的信息,將其轉化為可供我們理解和分析的數字信號。從智能手機上的指紋解鎖,到自動駕駛汽車的精確導航,再到醫療領域的疾病診斷,光學傳感器的應用遍布生活的每一個角落。本文將帶你深入了解光學傳感器的工作原理、分類、應用及其未來的發展趨勢。 光學傳感器的工作原理 光學傳感器的工作原理基于光學效應,即當光線與物質相互作用時,會產生一
發表于 04-15 18:24
?54次閱讀
在工業自動化領域,傳感器作為檢測和控制系統的關鍵組件,其準確性和可靠性至關重要。為確保傳感器能夠持續提供精確的數據,定期的校準工作必不可少。本文將深入探討工業傳感器的校準技巧,幫助技術人員更好地理解和執行這一重要過程。 一、校準的重要性 傳感器在長時間的使用過程中,由于環境因素、物理磨損或內部元件老化等原因,其測量精度可能會逐漸下降。校準是通過一系列標準程序,調整傳感器參數,使其輸出信號與標準值一致或
發表于 04-15 18:23
?52次閱讀
隨著科技的飛速發展,人形機器人正逐漸成為現實生活中的一部分。這些機器人不僅在工業生產中發揮著重要作用,還在醫療、科研、服務等多個領域展現出巨大的潛力。而在這類機器人的眾多核心配件中,六維力傳感器無疑占據了舉足輕重的地位。 一、六維力傳感器的基本定義與原理 六維力傳感器,也被稱為六維力和力矩傳感器或六軸力傳感器,是一種能夠同時測量三個力分量(Fx、Fy、Fz)和三個力矩分量(Mx、My、Mz)的先進傳感器。其核心結構通
發表于 04-15 18:22
?55次閱讀
OPA2356-EP 高速電壓反饋 CMOS 運算放大器設計專為視頻應用和其他需要寬帶寬的 應用 而設計。OPA2356-EP 具有單位增益穩定性,并且可以驅動大輸出電流。差分增益為 0.02%,差分相位為 0.05°。靜態電流僅為每通道 8.3mA。
發表于 04-15 18:18
?167次閱讀
揚興科技,正是這股國產力量的中堅。憑借深厚的技術積累和完備的國產化供應鏈,揚興已實現高性能時頻解決方案的全面落地,為中國制造企業提供更安全、更可控、更具韌性的選擇。
發表于 04-15 18:14
?267次閱讀
評論