亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java線程中的ThreadLocal詳細(xì)分析

 更新時(shí)間:2023年09月26日 09:09:47   作者:西二旗C羅  
這篇文章主要介紹了Java線程中的ThreadLocal詳細(xì)分析,ThreadLocal?提供線程的局部變量,每個(gè)線程都可以通過(guò)?get()和?set()對(duì)局部變量進(jìn)行操作而不會(huì)對(duì)其他線程的局部變量產(chǎn)生影響,實(shí)現(xiàn)了線程之間的數(shù)據(jù)隔離,需要的朋友可以參考下

ThreadLocal簡(jiǎn)介

ThreadLocal 提供線程的局部變量,每個(gè)線程都可以通過(guò) get() 和 set() 對(duì)局部變量進(jìn)行操作而不會(huì)對(duì)其他線程的局部變量產(chǎn)生影響,實(shí)現(xiàn)了線程之間的數(shù)據(jù)隔離。

原理代碼

ThreadLocal<String> tl = new ThreadLocal<>();
new Thread(()->{
    try {
        tl.set("你好");
        System.out.println(tl.get());
    } finally {
        tl.remove();
    }
},"線程1").start();
new Thread(()->{
    try {
        tl.set("我好");
        System.out.println(tl.get());
    } finally {
        tl.remove();
    }
},"線程2").start();

原理描述

  • 每個(gè) Thread 維護(hù)著一個(gè) ThreadLocalMap 的引用
  • ThreadLocalMap 是 ThreadLocal 的內(nèi)部類,用 Entry 來(lái)進(jìn)行存儲(chǔ)
  • 調(diào)用 ThreadLocal 的 set() 方法時(shí),實(shí)際上就是往 ThreadLocalMap 設(shè)置值,key 是 ThreadLocal 對(duì)象,值是傳遞進(jìn)來(lái)的對(duì)象
  • 調(diào)用 ThreadLocal 的 get() 方法時(shí),實(shí)際上就是往 ThreadLocalMap 獲取值,key 是 ThreadLocal 對(duì)象
  • ThreadLocal 本身并不存儲(chǔ)值,它只是作為一個(gè) key 來(lái)讓線程從 ThreadLocalMap 獲取 value。

Thread 和 ThreadLocal 中 ThreadLocalMap 的數(shù)據(jù)結(jié)構(gòu)和關(guān)系 

ThreadLocalMap 中的 Key 是弱引用,這是為什么?

在這里插入圖片描述

當(dāng)引用 ThreadLocal 的方法結(jié)束的時(shí)候,此時(shí) threadLocal 對(duì)象不再被使用,此時(shí)應(yīng)該將 threadLocal 對(duì)象清除,假設(shè) key 引用 threadLocal 對(duì)象的時(shí)候時(shí)強(qiáng)引用,則該對(duì)象不會(huì)被清除,因此要采用弱引用。

ThreadLoca l中的內(nèi)存泄露問(wèn)題,ThreadLocal 中最后為什么要加 remove 方法

  • 正常情況下,我們線程結(jié)束之后,整個(gè)線程就會(huì)被銷毀,則 ThreadLocalMap 中的 Enty 也會(huì)被清除了
  • 但是在使用線程池的情況下,線程會(huì)被復(fù)用,此時(shí) ThreadLocalMap 中的 Entry 不會(huì)被釋放,會(huì)存在這樣的 Entry:k:null value:222 這樣就會(huì)造成內(nèi)存泄露
  • 所以每次都要調(diào)用remove 清除 key為 null 的Entry

到此這篇關(guān)于Java線程中的ThreadLocal詳細(xì)分析的文章就介紹到這了,更多相關(guān)Java的ThreadLocal內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論