91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

ThreadLocal是什么

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

掃碼添加小助手

加入工程師交流群


ThreadLocal是什么

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

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

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

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

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

所以對(duì)于不同的線程,每次獲取副本值時(shí),別的線程并不能獲取到當(dāng)前線程的副本值,形成了副本的隔離,互不干擾。

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

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

ThreadLocalMap

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

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

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

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

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

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

注意了!!

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

由于ThreadLocalMap的key是弱引用,而Value是強(qiáng)引用。這就導(dǎo)致了一個(gè)問題,ThreadLocal在沒有外部對(duì)象強(qiáng)引用時(shí),發(fā)生GC時(shí)弱引用Key會(huì)被回收,而Value不會(huì)回收。

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

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

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

如何避免泄漏

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

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

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

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

審核編輯 :李倩


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

    關(guān)注

    0

    文章

    616

    瀏覽量

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

    關(guān)注

    0

    文章

    509

    瀏覽量

    20829
  • Thread
    +關(guān)注

    關(guān)注

    2

    文章

    93

    瀏覽量

    27478

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    比亞迪電子、銀輪、五菱、雅視光學(xué)…ITES 工業(yè)新智大會(huì)大咖揭曉

    第27屆ITES深圳工業(yè)展暨高端裝備產(chǎn)業(yè)集群展將于2026年3月31-4月3日在深圳國際會(huì)展中心啟幕。 展會(huì)同期將舉辦2026 “工業(yè)新智大會(huì)”,聚焦產(chǎn)品核心部件與先進(jìn)工藝應(yīng)用,重磅打造AI服務(wù)器、半導(dǎo)體設(shè)備、具身智能、航空航天、電子智造、新能源汽車、醫(yī)療器械7大系列,共計(jì)80余場(chǎng)高質(zhì)量專題論壇。 話題從人形機(jī)器人、AI眼鏡到AI服務(wù)器液冷板加工、內(nèi)腔流道檢測(cè)等,直擊產(chǎn)業(yè)痛點(diǎn)與技術(shù)前沿,是把握行業(yè)趨勢(shì)的頂級(jí)技術(shù)前瞻交流平臺(tái)?,F(xiàn)場(chǎng)還匯聚了眾多
    的頭像 發(fā)表于 03-09 18:15 ?402次閱讀
    比亞迪電子、銀輪、五菱、雅視光學(xué)…ITES 工業(yè)新智大會(huì)大咖揭曉

    半導(dǎo)體×精密制造|來ITES,解鎖零部件智造最新工藝

    拆開一臺(tái)高端半導(dǎo)體設(shè)備,你會(huì)發(fā)現(xiàn),突破“卡脖子”的關(guān)鍵,往往就藏在那些數(shù)萬個(gè)不起眼的零部件里。 硬脆材料怎么鉆?復(fù)雜腔體怎么銑?數(shù)萬個(gè)精密部件怎么組裝?在微納米級(jí)表面精度、高效精準(zhǔn)組裝的路上,你的“攔路虎”是什么? 如果你關(guān)注半導(dǎo)體精密制造,也正被這些制造難題困擾,不想再四處奔波調(diào)研、盲目尋源,那么3月31日-4月3日,你必須來深圳國際會(huì)展中心一趟。 第27屆ITES深圳工業(yè)展,將匯聚行業(yè)頂尖的精密加工工藝和自動(dòng)化技術(shù)
    的頭像 發(fā)表于 03-09 18:08 ?396次閱讀
    半導(dǎo)體×精密制造|來ITES,解鎖零部件智造最新工藝

    上能電氣斬獲2025年度創(chuàng)新光儲(chǔ)產(chǎn)品獎(jiǎng)

    3月8日,在備受矚目的2026中國(第八屆)戶用和工商業(yè)光儲(chǔ)充大會(huì)上,上能電氣憑借其在光儲(chǔ)領(lǐng)域的卓越表現(xiàn)與品牌影響力,榮膺“2025年度創(chuàng)新光儲(chǔ)產(chǎn)品獎(jiǎng)”。這一榮譽(yù)不僅標(biāo)志著行業(yè)同仁對(duì)上能電氣過去一年技術(shù)創(chuàng)新與市場(chǎng)成績(jī)的高度認(rèn)可,也為公司在2026年的新征程注入了強(qiáng)勁動(dòng)力。
    的頭像 發(fā)表于 03-09 17:51 ?452次閱讀

    海格通信與高域科技深化戰(zhàn)略合作

    2026年3月6日,海格通信(股票代碼:002465)與廣東高域科技有限公司(以下簡(jiǎn)稱“高域”)在廣州正式簽署新一輪戰(zhàn)略合作協(xié)議,進(jìn)一步助力低空經(jīng)濟(jì)高質(zhì)量發(fā)展與立體交通體系構(gòu)建。
    的頭像 發(fā)表于 03-09 17:50 ?529次閱讀

    晶科能源不沾灰自潔組件的問題解答(2)

    關(guān)于晶科不沾灰組件,在昨天的直播中大家的反響很熱烈,為此小編今天整理了大家的熱點(diǎn)問題第二集,并同步更新在了官網(wǎng),方便查閱。歡迎大家繼續(xù)在評(píng)論區(qū)留言、互動(dòng)。
    的頭像 發(fā)表于 03-09 17:46 ?694次閱讀

    華礪智行榮膺2025年車路云一體化優(yōu)秀服務(wù)商殊榮

    3月5日,第十五屆(2026)智能交通市場(chǎng)年會(huì)在杭州盛大開幕。本屆年會(huì)以“共生”為主題,匯聚行業(yè)精英,共探智能交通高質(zhì)量發(fā)展新路徑。在同期舉行的頒獎(jiǎng)典禮上,華礪智行憑借在車路協(xié)同領(lǐng)域的前沿技術(shù)探索、規(guī)模化市場(chǎng)實(shí)踐以及卓越的行業(yè)影響力,連續(xù)第四年榮膺“車路云一體化優(yōu)秀服務(wù)提供商”獎(jiǎng)項(xiàng)。
    的頭像 發(fā)表于 03-09 17:44 ?695次閱讀

    兆芯攜手軟通華方亮相MWC 2026世界移動(dòng)通信大會(huì)

    2026年3月2日,全球移動(dòng)通信領(lǐng)域年度盛會(huì) —— 世界移動(dòng)通信大會(huì)(MWC 2026)在西班牙巴塞羅那 Gran Via Fira 展館正式啟幕。本屆大會(huì)以“智能新紀(jì)元(The IQ Era)”為主題,聚焦 AI 與通信、算力、終端的深度融合,匯聚了全球 200 余個(gè)國家和地區(qū)的科技力量,共探智能時(shí)代產(chǎn)業(yè)變革新方向。作為自主通用計(jì)算核心力量,兆芯攜手生態(tài)伙伴軟通華方重磅亮相 7A36-10 號(hào)展位,以 “高效、自主、協(xié)同” 的中國實(shí)力,向全球展現(xiàn)國內(nèi)計(jì)算產(chǎn)業(yè)的創(chuàng)新突破與生態(tài)活力。
    的頭像 發(fā)表于 03-09 17:42 ?467次閱讀

    兆瓦級(jí)儲(chǔ)能系統(tǒng)混合式直流斷路器技術(shù)深度解析:零損耗與超高速關(guān)斷協(xié)同架構(gòu)

    在全球能源結(jié)構(gòu)向高比例可再生能源轉(zhuǎn)型的宏觀背景下,電池儲(chǔ)能系統(tǒng)(Battery Energy Storage System, BESS)已成為平抑風(fēng)光發(fā)電波動(dòng)、支撐電網(wǎng)瞬態(tài)穩(wěn)定性的核心基礎(chǔ)設(shè)施。
    的頭像 發(fā)表于 03-09 17:38 ?366次閱讀
    兆瓦級(jí)儲(chǔ)能系統(tǒng)混合式直流斷路器技術(shù)深度解析:零損耗與超高速關(guān)斷協(xié)同架構(gòu)

    碳化硅(SiC)功率模塊標(biāo)稱電流的定義、物理來源與工程降額解析

    在現(xiàn)代電力電子與能源轉(zhuǎn)換系統(tǒng)中,功率半導(dǎo)體器件的物理邊界直接決定了整個(gè)系統(tǒng)的能量轉(zhuǎn)換效率、功率密度、體積重量以及熱設(shè)計(jì)架構(gòu)的復(fù)雜程度。
    的頭像 發(fā)表于 03-09 17:37 ?386次閱讀
    碳化硅(SiC)功率模塊標(biāo)稱電流的定義、物理來源與工程降額解析

    SiC功率模塊標(biāo)稱電流的奧秘-從原理到封裝

    SiC功率模塊的“標(biāo)稱電流”(在數(shù)據(jù)手冊(cè)中通常標(biāo)記為連續(xù)漏極電流 ID,或 Inom)是評(píng)估器件功率等級(jí)的核心參數(shù)。
    的頭像 發(fā)表于 03-09 17:34 ?359次閱讀
    SiC功率模塊標(biāo)稱電流的奧秘-從原理到封裝

    羅克韋爾AB PLC如何實(shí)現(xiàn)遠(yuǎn)距離無線互聯(lián)?

    針對(duì)ab plc的無線通信需求,提供以下適配其協(xié)議的無線模塊及組網(wǎng)方案,支持RJ45接口的無線Modbus TCP/IP數(shù)據(jù)傳輸,適用于工業(yè)自動(dòng)化場(chǎng)景下的遠(yuǎn)程監(jiān)控、設(shè)備互聯(lián)及控制指令無線傳輸。以下是適配方案及具體使用步驟: 一、觸摸屏與ab plc無線通信 下面以威綸通觸摸屏和2臺(tái)羅克韋爾AB820 PLC為例,介紹威綸通觸摸屏與多臺(tái)PLC的無線以太網(wǎng)通信實(shí)現(xiàn)過程。在本方案中采用了 ab plc模塊 ——DTD418MB,作為實(shí)現(xiàn)無線通訊的硬件設(shè)備。 二、接線方式 1、觸摸屏與DTD
    的頭像 發(fā)表于 03-09 17:33 ?407次閱讀
    羅克韋爾AB PLC如何實(shí)現(xiàn)遠(yuǎn)距離無線互聯(lián)?

    激光器測(cè)試-艾德克斯IT6100B管理過沖,保證電流的輸出波形質(zhì)量

    深圳市科瑞杰科技有限公司-艾德克斯IT6100B高速度高精度可編程直流電源系列突破創(chuàng)新,提出CC/CV優(yōu)先權(quán)概念,可幫助用戶解決長(zhǎng)期測(cè)試應(yīng)用中的各種嚴(yán)苛問題,使需求電源高速或者無過沖等應(yīng)用變得更加靈活,更節(jié)約了測(cè)試設(shè)備購置成本。
    的頭像 發(fā)表于 03-09 17:33 ?362次閱讀
    激光器測(cè)試-艾德克斯IT6100B管理過沖,保證電流的輸出波形質(zhì)量

    使用艾德克斯IT8900電子負(fù)載的直流充電樁測(cè)試實(shí)例

    深圳市科瑞杰科技有限公司-直流充電樁通常采用模塊化設(shè)計(jì),市面上常見15kW,20kW 充電模塊,在直流充電樁廠商中既需要對(duì)充電模塊進(jìn)行測(cè)試,也需要對(duì)整樁進(jìn)行測(cè)試。
    的頭像 發(fā)表于 03-09 17:31 ?710次閱讀
    使用艾德克斯IT8900電子負(fù)載的直流充電樁測(cè)試實(shí)例

    低噪穩(wěn)定聲高穩(wěn)定性磁感應(yīng)編碼器芯片設(shè)計(jì)

    磁感應(yīng)編碼器憑借非接觸測(cè)量、抗惡劣環(huán)境等優(yōu)勢(shì),廣泛應(yīng)用于工業(yè)伺服、智能家電、汽車電子等領(lǐng)域。隨著終端設(shè)備對(duì)控制精度與可靠性的要求升級(jí),編碼器芯片需同時(shí)滿足低噪聲(角度抖動(dòng)≤±0.03°)與高穩(wěn)定性(寬溫域精度波動(dòng)≤±0.05°)的核心指標(biāo)。傳統(tǒng)設(shè)計(jì)存在磁傳感模塊噪聲大、溫漂補(bǔ)償不足、電磁兼容性弱等問題,制約了其在高端場(chǎng)景的應(yīng)用。本文提出一款低噪聲高穩(wěn)定性磁感應(yīng)編碼器芯片設(shè)計(jì)方案,通過傳感前端優(yōu)化、信號(hào)處理算法創(chuàng)新與可靠性強(qiáng)化,實(shí)現(xiàn)高精度、高魯棒性的位置檢測(cè)。
    的頭像 發(fā)表于 03-09 17:30 ?723次閱讀

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

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