一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ThreadLocal是什么

jf_ro2CN3Fa ? 來源:CSDN ? 2023-01-30 11:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群


ThreadLocal是什么

ThreadLocal是一個本地線程副本變量工具類。主要用于將私有線程和該線程存放的副本對象做一個映射,各個線程之間的變量互不干擾,在高并發(fā)場景下,可以實現(xiàn)無狀態(tài)的調(diào)用,特別適用于各個線程依賴不通的變量值完成操作的場景。

下圖為ThreadLocal的內(nèi)部結(jié)構(gòu)圖

931b2958-9fb9-11ed-bfe3-dac502259ad0.png

從上面的結(jié)構(gòu)圖,我們已經(jīng)窺見ThreadLocal的核心機制:

  • 每個Thread線程內(nèi)部都有一個Map。
  • Map里面存儲線程本地對象(key)和線程的變量副本(value)
  • 但是,Thread內(nèi)部的Map是由ThreadLocal維護的,由ThreadLocal負責向map獲取和設(shè)置線程的變量值。

所以對于不同的線程,每次獲取副本值時,別的線程并不能獲取到當前線程的副本值,形成了副本的隔離,互不干擾。

基于 Spring Boot + MyBatis Plus + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

ThreadLocalMap

932a8d58-9fb9-11ed-bfe3-dac502259ad0.png

ThreadLocalMap是ThreadLocal的內(nèi)部類,沒有實現(xiàn)Map接口,用獨立的方式實現(xiàn)了Map的功能,其內(nèi)部的Entry也獨立實現(xiàn)。

和HashMap的最大的不同在于,ThreadLocalMap結(jié)構(gòu)非常簡單,沒有next引用,也就是說ThreadLocalMap中解決Hash沖突的方式并非鏈表的方式,而是采用線性探測的方式。(ThreadLocalMap如何解決沖突?

在ThreadLocalMap中,也是用Entry來保存K-V結(jié)構(gòu)數(shù)據(jù)的。但是Entry中key只能是ThreadLocal對象,這點被Entry的構(gòu)造方法已經(jīng)限定死了。

staticclassEntryextendsWeakReference<ThreadLocal>{
/**ThevalueassociatedwiththisThreadLocal.*/
Objectvalue;

Entry(ThreadLocalk,Objectv){
super(k);
value=v;
}
}

注意了?。?/p>

Entry繼承自WeakReference(弱引用,生命周期只能存活到下次GC前),但只有Key是弱引用類型的,Value并非弱引用。(問題馬上就來了)

由于ThreadLocalMap的key是弱引用,而Value是強引用。這就導致了一個問題,ThreadLocal在沒有外部對象強引用時,發(fā)生GC時弱引用Key會被回收,而Value不會回收。

當線程沒有結(jié)束,但是ThreadLocal已經(jīng)被回收,則可能導致線程中存在ThreadLocalMap的鍵值對,造成內(nèi)存泄露。(ThreadLocal被回收,ThreadLocal關(guān)聯(lián)的線程共享變量還存在)。

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 實現(xiàn)的后臺管理系統(tǒng) + 用戶小程序,支持 RBAC 動態(tài)權(quán)限、多租戶、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

  • 項目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

如何避免泄漏

為了防止此類情況的出現(xiàn),我們有兩種手段。

1、使用完線程共享變量后,顯示調(diào)用ThreadLocalMap.remove方法清除線程共享變量;

既然Key是弱引用,那么我們要做的事,就是在調(diào)用ThreadLocal的get()、set()方法時完成后再調(diào)用remove方法,將Entry節(jié)點和Map的引用關(guān)系移除,這樣整個Entry對象在GC Roots分析后就變成不可達了,下次GC的時候就可以被回收。

2、JDK建議ThreadLocal定義為private static,這樣ThreadLocal的弱引用問題則不存在了。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    614

    瀏覽量

    28882
  • 線程
    +關(guān)注

    關(guān)注

    0

    文章

    508

    瀏覽量

    20130
  • Thread
    +關(guān)注

    關(guān)注

    2

    文章

    88

    瀏覽量

    26475

原文標題:ThreadLocal 搭配線程池使用造成內(nèi)存泄漏的原因和解決方案

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    4D毫米波雷達加速上車,加特蘭微、隔空微和華為放出哪些大招?

    電子發(fā)燒友原創(chuàng) 章鷹 今年以來,新能源汽車智能駕駛領(lǐng)域加速發(fā)展,L2、L3都繞不開毫米波雷達。毫米波雷達是指利用波長1-10mm,頻率為30-300Hz的毫米波進行探測的傳感器,具有受環(huán)境影響小,探測距離長、障礙物識別率高等優(yōu)勢。此外技術(shù)成熟度高,算法簡單,穩(wěn)定性良好,缺點是分辨率低,對行人感知效果不佳,視場角較小,因此在實際場景中,主要是配合車載攝像頭使用。 相比純視覺和激光雷達,3D毫米波雷達在惡劣天氣條件下表現(xiàn)出色,能夠穿
    的頭像 發(fā)表于 06-28 00:55 ?1275次閱讀
    4D毫米波雷達加速上車,加特蘭微、隔空微和華為放出哪些大招?

    打破X86/ARM壟斷!國產(chǎn)全新自主架構(gòu)CPU處理器重磅發(fā)布

    電子發(fā)燒友網(wǎng)報道(文/李彎彎)6月26日,2025龍芯產(chǎn)品發(fā)布暨用戶大會在北京中關(guān)村國際創(chuàng)新中心舉行。此次發(fā)布會,龍芯中科正式推出了基于自主指令集龍架構(gòu)(LoongArch)研發(fā)的服務(wù)器處理器龍芯3C6000系列、工控及移動終端處理器龍芯2K3000/3B6000M,以及相關(guān)整機和解決方案,標志著龍芯在自主芯片領(lǐng)域又邁出了堅實的一步。 ? 龍芯中科董事長胡偉武在發(fā)布會上表示:“我國信息產(chǎn)業(yè)的根本出路在于構(gòu)建獨立于X86和ARM體系之外的第三套生態(tài)體系,龍芯將
    的頭像 發(fā)表于 06-28 00:40 ?952次閱讀
    打破X86/ARM壟斷!國產(chǎn)全新自主架構(gòu)CPU處理器重磅發(fā)布

    阿里2025財年業(yè)績:凈利潤大漲77%,AI+云業(yè)務(wù)攬下千億收入

    (電子發(fā)燒友網(wǎng)綜合報道)6月26日,阿里巴巴發(fā)布了2025財年年報:2025財年,阿里巴巴營收達到9963.47億元,同比增長6%;凈利潤達到1259.76億元,同比大增長77%,創(chuàng)下歷史新高。 ? 圖:阿里巴巴2025財年年報 ? 阿里巴巴的業(yè)務(wù)包括淘天集團、阿里國際數(shù)字商業(yè)集團、云智能集團、菜鳥集團、本地生活集團、虎鯨文娛集團及其他相關(guān)業(yè)務(wù)。2025財年,電商、“AI+云”兩大核心業(yè),成為驅(qū)動阿里巴巴長期發(fā)展的兩大引擎。 ? 分業(yè)務(wù)來看:云智能集團(AI+云)的
    的頭像 發(fā)表于 06-28 00:10 ?282次閱讀
    阿里2025財年業(yè)績:凈利潤大漲77%,AI+云業(yè)務(wù)攬下千億收入

    江波龍子公司起訴佰維存儲!

    電子發(fā)燒友網(wǎng)綜合報道,6月24日,佰維存儲發(fā)布公告,公司卷入兩起專利侵權(quán)訴訟,涉案金額合計122萬元。公告顯示,近日公司收到江蘇省南京市中級人民法院送達的《民事起訴狀》,成為兩起侵犯發(fā)明專利權(quán)糾紛的被告。兩起糾紛的原告元預(yù)知技術(shù)(深圳)有限公司要求公司和江蘇金震手機連鎖商貿(mào)有限公司共同賠償合理費用,每個案件律師費等合理開支暫計人民幣60.84萬元及訴訟費用,兩案件合計121.69萬元。目前,法院已立案受理,尚未開庭審理。
    發(fā)表于 06-28 00:09 ?203次閱讀

    價格戰(zhàn)VS算法戰(zhàn),AI玩具電機驅(qū)動芯片兩極分化格局形成

    電子發(fā)燒友網(wǎng)報道(文/黃山明)在AI玩具高速發(fā)展的階段,電機驅(qū)動芯片作為實現(xiàn)玩具動作交互的核心組件,隨著AI機器人、智能寵物等高端產(chǎn)品的普及,其市場規(guī)模占比逐步提升。以中國市場為例,2025年AI玩具市場規(guī)模預(yù)計突破80億元,若按電機驅(qū)動芯片占硬件成本5%-10%計算,其市場規(guī)模約在4-8億元區(qū)間。 ? 而一些AI陪伴機器人需要復雜動作支持,單臺設(shè)備可能集成3-5顆電機驅(qū)動芯片。而技術(shù)上,也開始從單一轉(zhuǎn)向控制向多軸協(xié)同、靜音驅(qū)動發(fā)展,推動
    的頭像 發(fā)表于 06-28 00:05 ?1270次閱讀

    自動駕駛+大旅游跨界合作 小馬智行×嶺南控股簽署戰(zhàn)略合作框架協(xié)議

    6月27日,小馬智行與廣州嶺南集團控股股份有限公司(下稱“嶺南控股”)簽署戰(zhàn)略合作框架協(xié)議,雙方將立足于各自優(yōu)勢,共同打造“自動駕駛+大旅游”的多元應(yīng)用場景,涵蓋自動駕駛文旅專線、IP聯(lián)名產(chǎn)品、科普研學活動等,旨在提升雙方的商業(yè)和品牌價值,打造廣州城市名片。 根據(jù)協(xié)議內(nèi)容,雙方將 以廣州南沙為首站試點,精心定制自動駕駛文旅專線 ,實現(xiàn)從交通出行到文旅體驗的全鏈路升級。同時,雙方還將深度挖掘品牌IP元素,打造多元化
    的頭像 發(fā)表于 06-27 18:52 ?226次閱讀

    HDC.2025 潤開鴻發(fā)布基于OpenHarmony的智慧中醫(yī)AI輔助診療解決方案

    2025年6月20日至22日,第七屆華為開發(fā)者大會(HDC.2025)在東莞松山湖盛大舉行。作為鴻蒙生態(tài)的核心伙伴和深度參與者、華為OpenHarmony使能伙伴、華為HarmonyOS開發(fā)服務(wù)商,江蘇潤和軟件股份有限公司旗下子公司潤開鴻數(shù)字科技有限公司(以下簡稱“潤開鴻”)于本屆大會上重磅發(fā)布基于OpenHarmony的智慧中醫(yī)AI輔助診療解決方案,展示了自身基于“OpenHarmony+AI”的數(shù)智化解決方案及賦能服務(wù)創(chuàng)新成果。 隨著城市現(xiàn)代化變遷,傳統(tǒng)中醫(yī)在現(xiàn)代西醫(yī)的診療體系沖
    的頭像 發(fā)表于 06-27 18:50 ?143次閱讀
    HDC.2025 潤開鴻發(fā)布基于OpenHarmony的智慧中醫(yī)AI輔助診療解決方案

    雙頻 802.11n 無線 LAN 前端 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()雙頻 802.11n 無線 LAN 前端相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有雙頻 802.11n 無線 LAN 前端的引腳圖、接線圖、封裝手冊、中文資料、英文資料,雙頻 802.11n 無線 LAN 前端真值表,雙頻 802.11n 無線 LAN 前端管腳等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 06-27 18:33
    雙頻 802.11n 無線 LAN 前端 skyworksinc

    復旦微低功耗MCU代理供應(yīng)

    FM33FRO510LQFP100 FM33FR058 LQFP80 FM33FRO48 LQFP80 FM33FR028LQFP80 FM33FR056LOFPS4 FM33FR046LOFPS4 FM33FR026LOFPS4 FM33FRO55LOFP48 FM33FRO45LOFP48 FM33FRO54LOFP44 FM33FRO44LOFPA4 FM33FR024LOFP44 FM33FR053LQFP32 FM33FR043LOFP32 FM33FR023LOFP32 FM33LE026 LQFP64 F33LE025LOFP48 FM33LE023 OFN32 FM33LE022 TSSOP24 FM33LE016LOFP64 FM33LE015 LOFP48 F33LE013 QFN32 FM33LE012TSSOP24 FMM33LCO46NLOFP54 FM33LC026NLOFP64 FM33LCO16NLOFP64 FM33LCO45NLOFP48 FM33LCO25NLOFP48 FM33LCO15NLOFP48 FM33LCO44NR LOFP44 FMM33LC043N QFN32 FMM33LC023NQFN32 FM33LC013NQFN32 FMM33LC042NTSSOP20 FM33LC022NTSSOP20 FM33LCO12NTSSOP20 FM33LC012MTSSOP24 FM33LC015M LOFPA48 FM33LG048LQFP8O FM33LG046LQFP64 FM33LG026 LQFP64 FM33LG045 LOFP48 FM33LG025 LOFP48 FM33A0610EVB LOFP100 FM33A068EVBLOFP8O FM33A065EVBLOFP48 FM33A0410EVELOFP100 FM33A048EVB LOFP80 MG33A045EV8 LOFP48 FM33M0610ER LOFP100 FM33MCM10ERLOFP100 FM33MMO68ERLOFP80 FMI33MMOABERLOFP80 FM330028ER LOFP80 FM33MMO66ERLOFP64 FMI33MMOA6ERLOFP64 FM33MM026ER LOFP64 ………………………………………………………………………………… 復旦微原廠代理,支持終端工廠,為客戶提供樣品以及相關(guān)技術(shù)咨詢 如需更多系列型號,歡迎聯(lián)系咨詢。 深圳市芯天電子有限公司馬先生:17318031970 微信同步
    發(fā)表于 06-27 18:32

    低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28B 和 B29) skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28B 和 B29)相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28B 和 B29)的引腳圖、接線圖、封裝手冊、中文資料、英文資料,低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28B 和 B29)真值表,低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28B 和 B29)管腳等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 06-27 18:32
    低頻段 LNA 前端模塊(B26/B5/B18/B19、B8、B20、B12/13/17、B28A、B28B 和 B29) skyworksinc

    帶增益的 RX 分集 FEM(B26、B8、B20、B1/4、B3 和 B7) skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()帶增益的 RX 分集 FEM(B26、B8、B20、B1/4、B3 和 B7)相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有帶增益的 RX 分集 FEM(B26、B8、B20、B1/4、B3 和 B7)的引腳圖、接線圖、封裝手冊、中文資料、英文資料,帶增益的 RX 分集 FEM(B26、B8、B20、B1/4、B3 和 B7)真值表,帶增益的 RX 分集 FEM(B26、B8、B20、B1/4、B3 和 B7)管腳等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 06-27 18:31
    帶增益的 RX 分集 FEM(B26、B8、B20、B1/4、B3 和 B7) skyworksinc

    高功率 2.4 GHz 802.15.4 前端模塊 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()高功率 2.4 GHz 802.15.4 前端模塊相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有高功率 2.4 GHz 802.15.4 前端模塊的引腳圖、接線圖、封裝手冊、中文資料、英文資料,高功率 2.4 GHz 802.15.4 前端模塊真值表,高功率 2.4 GHz 802.15.4 前端模塊管腳等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 06-27 18:31
    高功率 2.4 GHz 802.15.4 前端模塊 skyworksinc

    860 – 930 MHz 高功率射頻前端模塊 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()860 – 930 MHz 高功率射頻前端模塊相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有860 – 930 MHz 高功率射頻前端模塊的引腳圖、接線圖、封裝手冊、中文資料、英文資料,860 – 930 MHz 高功率射頻前端模塊真值表,860 – 930 MHz 高功率射頻前端模塊管腳等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 06-27 18:31
    860 – 930 MHz 高功率射頻前端模塊 skyworksinc

    2.4 GHz 智能能源/ZigBee 前端模塊 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()2.4 GHz 智能能源/ZigBee 前端模塊相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有2.4 GHz 智能能源/ZigBee 前端模塊的引腳圖、接線圖、封裝手冊、中文資料、英文資料,2.4 GHz 智能能源/ZigBee 前端模塊真值表,2.4 GHz 智能能源/ZigBee 前端模塊管腳等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 06-27 18:30
    2.4 GHz 智能能源/ZigBee 前端模塊 skyworksinc

    Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅

    進行評測對比,發(fā)現(xiàn)鴻蒙上的耗時是同等性能的iOS設(shè)備上2.48倍。為此,我們針對鴻蒙平臺進行一系列的優(yōu)化,包括內(nèi)聯(lián)優(yōu)化、ThreadLocal優(yōu)化、協(xié)程性能優(yōu)化等。優(yōu)化后,鴻蒙Kotlin
    發(fā)表于 06-04 16:46