日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java并發(fā)編程之ThreadLocal詳解

瀏覽:212日期:2022-08-11 10:59:39
目錄一、什么是ThreadLocal?二、ThreadLocal的使用場景三、如何使用ThreadLocal四、數(shù)據(jù)庫連接時的使用五、ThreadLocal工作原理六、小結(jié)七、注意點一、什么是ThreadLocal?

ThreadLocal叫做線程本地變量,ThreadLocal中填充的變量屬于當(dāng)前線程,該變量對其他線程而言是隔離的。ThreadLocal為變量在每個線程中都創(chuàng)建了一個副本,則每個線程都可以訪問自己內(nèi)部的副本變量。

二、ThreadLocal的使用場景

1.當(dāng)對象進(jìn)行跨層傳遞的時候,使用ThreadLocal可以避免多層傳遞,打破層次間的約束。

2.線程間數(shù)據(jù)隔離。

3.進(jìn)行事務(wù)操作,用于存儲線程事務(wù)信息。

4.數(shù)據(jù)庫連接,Session會話管理。

三、如何使用ThreadLocal

ThreadLocal的作用是每一個線程創(chuàng)建一個副本。

Java并發(fā)編程之ThreadLocal詳解

從以上實例中可以看出,每一個線程都有自己的local值,設(shè)置一個休眠時間就是為了另外一個線程也能夠及時的讀取當(dāng)前的local值。

四、數(shù)據(jù)庫連接時的使用

Java并發(fā)編程之ThreadLocal詳解

上面是一個數(shù)據(jù)庫連接的管理類,使用數(shù)據(jù)庫的時候首先就是建立數(shù)據(jù)庫連接,然后用完之后進(jìn)行關(guān)閉,這里存在一個問題:如果1個客戶端頻繁的使用數(shù)據(jù)庫,那么就需要建立多次連接和關(guān)閉,這樣服務(wù)器可能會吃不消,如果有一萬個客戶端,服務(wù)器的壓力更大。這個時候就可以使用ThreadLocal,他會在每個線程中對連接創(chuàng)建一個副本,且在線程內(nèi)部任何地方都可以使用,線程之間互不影響,這樣一來就不存在線程安全問題,也不會嚴(yán)重影響程序執(zhí)行性能。

五、ThreadLocal工作原理

ThreadLocal中的主要方法:

Java并發(fā)編程之ThreadLocal詳解

set方法

Java并發(fā)編程之ThreadLocal詳解

首先獲取到當(dāng)前線程t,然后調(diào)用getMap獲取ThreadLocalMap,如果map存在,則將當(dāng)前線程對象作為key,要存儲的對象作為value存到map中去,如果該map不存在,則初始化一個。ThreadLocalMap:

Java并發(fā)編程之ThreadLocal詳解

ThreadLocalMap就是ThreadLocal的一個靜態(tài)內(nèi)部類,里面定義了一個Entry來保存數(shù)據(jù),而且還是繼承的弱引用。在Entry內(nèi)部使用了ThreadLocal作為key,使用我們設(shè)置的value作為value。getMap方法:

ThreadLocalMap getMap(Thread t) { return t.threadLocals;}

調(diào)用當(dāng)前線程t,返回當(dāng)前線程t中的成員變量threadLocals,threadLocals就是ThreadLocalMap。

get()方法

Java并發(fā)編程之ThreadLocal詳解

首先獲取當(dāng)前線程,然后調(diào)用getMap方法獲取一個ThreadLocalMap,如果map不為null,那就使用當(dāng)前線程作為ThreadLocalMap的Entry的鍵,然后值就作為相應(yīng)的值,如果沒有就設(shè)置一個初始值。設(shè)置初始值:

Java并發(fā)編程之ThreadLocal詳解

remove()方法

Java并發(fā)編程之ThreadLocal詳解

從map中移除即可。

六、小結(jié)

1.每個Thread內(nèi)部都維護(hù)著一個ThreadLocalMap的引用

2.ThreadLocalMap是ThreadLocal的內(nèi)部類,用Entry來進(jìn)行存儲

3.ThreadLocal創(chuàng)建的副本是存儲在自己的threadLocals中的,也就是自己的ThreadLocalMap

4.ThreadLocalMap的鍵值為ThreadLocal對象,而且可以有多個threadLocals變量,因此保存在map中。

5.在進(jìn)行g(shù)et之前,必須先set,否則會報空指針異常,當(dāng)然也可以初始化一個,但是必須重寫initialValue()方法。

6.ThreadLocal本身并不存儲值,他只是作為一個key來讓線程從ThreadLocalMap獲取value。

七、注意點

Java并發(fā)編程之ThreadLocal詳解

1.Thread中有一個map,就是ThreadLocalMap

2.ThreadLocalMap的key是ThreadLocal,值是我們自己設(shè)定的。

3.ThreadLocal是一個弱引用,當(dāng)為null時,會被當(dāng)成垃圾回收。

4.如果我們ThreadLocal是null了,也就是要被垃圾回收器回收了,但是此時我們的ThreadLocalMap生命周期和Thread的一樣,他不會回收,這時候就出現(xiàn)一個現(xiàn)象,就是ThreadLocalMap的key沒有了,但是value還在,這就造成了內(nèi)存泄漏。解決辦法:使用完ThreadLocal后,執(zhí)行remove操作,避免出現(xiàn)內(nèi)存溢出情況。

到此這篇關(guān)于Java并發(fā)編程之ThreadLocal詳解的文章就介紹到這了,更多相關(guān)Java ThreadLocal內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日本中文字幕不卡| 久久av资源| 亚洲91精品| 久久女人天堂| 牛牛精品成人免费视频| 日本在线成人| 亚洲国产专区校园欧美| 免费毛片在线不卡| 日韩网站在线| 亚洲aa在线| 国产欧美日韩一区二区三区四区| 欧美综合精品| 美女精品久久| av高清一区| 久久国产高清| 国产视频一区在线观看一区免费| 日韩精品一区第一页| 亚洲人成亚洲精品| 国产精品久久国产愉拍| 国产在线观看91一区二区三区| 日韩免费久久| 蜜臀91精品国产高清在线观看| 久久不射网站| 嫩呦国产一区二区三区av| 成人高清一区| 水蜜桃久久夜色精品一区的特点 | 不卡专区在线| 蜜臀av免费一区二区三区| 婷婷综合一区| 久久久久国产精品一区二区| 日本午夜精品久久久久| 久久久一二三| 国产精品视频一区二区三区四蜜臂| 99国产精品一区二区| 亚洲精品国产精品粉嫩| 国产黄大片在线观看| 免费成人性网站| 日本欧美不卡| 精品伊人久久久| 青草久久视频| 亚洲精品伊人| 狠狠操综合网| 色一区二区三区| 九九久久国产| 国产精品亚洲片在线播放| 中文日韩在线| 亚洲午夜精品久久久久久app| 久久免费精品| 久久99青青| 欧美一级二级三级视频| 国产二区精品| 久久久夜精品| 宅男在线一区| 婷婷国产精品| 久久国产电影| 欧美日韩国产亚洲一区| 日本精品不卡| 亚洲夜间福利| 精品一区毛片| 在线精品小视频| 欧美99久久| 午夜在线视频观看日韩17c| 午夜在线精品| 亚洲精品伦理| 日韩综合一区二区| 国产精品社区| 欧美日韩91| 麻豆91在线播放| 久久影院午夜精品| 99热精品久久| 在线亚洲一区| 亚洲欧洲免费| 日韩精品欧美成人高清一区二区| 日韩国产精品久久久| 国产精品va| 欧美日韩精品一区二区视频| 最新日韩欧美| 欧美久久精品| 久久狠狠婷婷| 婷婷综合一区| 国产日韩亚洲欧美精品| 日韩欧美不卡| 日本一区免费网站| 麻豆成全视频免费观看在线看| 最新国产拍偷乱拍精品| 日本在线观看不卡视频| 国产一区二区亚洲| 不卡中文字幕| 国产免费av国片精品草莓男男| 欧美亚洲日本精品| 婷婷亚洲成人| 97精品国产福利一区二区三区| 伊人精品在线| 国产精品一区二区精品视频观看| 久久免费精品| 夜夜精品视频| 国产不卡av一区二区| 综合激情婷婷| 亚洲大片在线| 国产中文欧美日韩在线| 蜜臀av性久久久久蜜臀aⅴ四虎 | 日韩视频二区| 国产精品久久久一区二区| 欧美成人亚洲| sm久久捆绑调教精品一区| 蜜臀a∨国产成人精品| 亚洲国产欧美日本视频| 91精品国产自产在线丝袜啪| 久久精选视频| 精品国产亚洲日本| 欧美一级二区| 最近国产精品视频| 黄色精品网站| 久久精品国产大片免费观看| 美女国产精品久久久| 欧美精品国产| 男女激情视频一区| 久久香蕉国产| 色老板在线视频一区二区| 国产一区二区精品久| 国产毛片精品| 日韩av一二三| 91欧美极品| 91嫩草精品| 免费久久99精品国产| 亚洲欧美高清| 日本 国产 欧美色综合| 亚洲欧美日韩视频二区| 人人精品人人爱| 深夜日韩欧美| 欧美亚洲自偷自偷| 国产精品免费大片| 久久香蕉精品香蕉| 97精品97| 欧美一区二区性| 日韩一级精品| 亚洲有吗中文字幕| 国产欧美综合一区二区三区| 91精品啪在线观看国产爱臀| 亚洲中午字幕| 国产欧美在线| 国精品产品一区| 99久久99久久精品国产片果冰| 婷婷综合五月| 日韩国产91| 国产在视频一区二区三区吞精| 日韩欧美综合| 亚洲婷婷丁香| 精品久久久久久久| 极品日韩av| **爰片久久毛片| 色爱av综合网| 亚洲精品麻豆| 老鸭窝一区二区久久精品| 国产精品久久观看| 国产亚洲亚洲| 免费在线观看一区| 米奇777超碰欧美日韩亚洲| 偷拍亚洲精品| 99精品视频在线| 国产精品xxx在线观看| 欧美精选一区二区三区| 日韩中文av| 欧美精选视频一区二区| 日韩激情一区二区| 亚洲天堂一区二区| 国产欧美高清视频在线| 黄色成人91| 国产欧美一区二区三区精品酒店| 国产精品99一区二区| 久久亚洲精精品中文字幕| 久久亚洲影院| 久久国产免费| 国产videos久久| 久久国内精品| 免费视频最近日韩| 久久天堂精品| 欧美激情国产在线| 欧美日本一区| 亚洲欧洲免费| 免费日本视频一区| 亚洲精品午夜av福利久久蜜桃| 久久久久久久久成人| 五月亚洲婷婷 | 91成人精品视频| 热三久草你在线| 欧美欧美黄在线二区| 亚洲三级视频| 一区二区三区四区在线观看国产日韩| 久久九九精品| re久久精品视频| 午夜久久美女| 亚洲精品网址| 国产精品日韩| 亚洲精品网址| 91精品99| 午夜精品影院| 亚洲一区成人| 蜜桃视频在线观看一区| 亚洲影院天堂中文av色|