Spring作用域與線程安全

Spring的作用域

  • singleton(單例):默認的scope,每個scope屬性來表示該bean的作用域,是bean的聲明周期膊爪。作用域為單例表示bean在第一次被注入時會創(chuàng)建一個單例對象绑蔫,改對象會一直被復用到應用結束
  • prototype(多例):bean被定義為在每次注入時都會創(chuàng)建一個新的對象
  • request:bean被定義為在每個http請求中創(chuàng)建一個單例對象,也就是說在單個請求中都會復用這一個單例對象
  • session:bean被定義為在一個session的生命周期內(nèi)創(chuàng)建一個單例對象
  • application:bean被定義為在servletContext的生命周期中復用一個單例對象
  • websocket:bean被定義為在websocket的生命周期中復用一個單例對象

無狀態(tài)對象

  • 由Spring管理得大多數(shù)對象其實都是一些無狀態(tài)的對象肿仑,這些對象不會因為多線程而導致狀態(tài)破壞很適合Spring的默認scope.每個單例的無狀態(tài)對象都是好線程安全的,換言之,只要是無狀態(tài)的對象,不管是單例還是多例欲间,都是線程安全的,只不過單例節(jié)省了不斷常見對象和GC的開銷断部。
  • 無狀態(tài)的對象包括常用的DO猎贴,DTO,VO等只是作為數(shù)據(jù)的實體模型的對象蝴光,還有Service,DAO,Controller這些沒有自己的狀態(tài)她渴,只是用來執(zhí)行某些操作。

Bean的安全使用

Spring對于bean的多線程安全問題沒有任何保證與措施蔑祟,對于每個bean的線程安全問題趁耗,根本原因在于對每個bean自身的設計,不要在bean中聲明任何有狀態(tài)的實例變量或類變量疆虚,如果必須設置苛败,那么可以使用ThreadLocal把變量變?yōu)榫€程私有满葛,如果bean的實例變量或類變量需要在多個線程之間共享,那么需要使用syncronized,lock,CAS等實現(xiàn)線程同步

ThreadLocal的使用

  • ThreadLocal思想就是為線程提供一個線程私有的變量副本著拭,這個多個線程可以所以修改自己線程局部的變量纱扭,不會影響其他線程。ThreadLocal含有一個ThreadLocalMap的內(nèi)部類儡遮,該類采取線性探測法實現(xiàn)HashMap,它的key值r為ThreadLocal對象并采用軟引用的方式來存儲變量副本
  • ThreadLocal提供的是淺拷貝乳蛾,如果需要解決內(nèi)部狀態(tài)被改變的問題,可以通過重寫其內(nèi)部的initialValue()方法來實現(xiàn)深拷貝
  • ThreadLocal與鎖機制不一樣的地方在于鄙币,鎖更強調(diào)的是如何同步多個線程去正確共享一個變量肃叶,ThreadLocal則是為了解決同一個變量如何不被多個線程共享。從性能開銷的角度來看十嘿,如果鎖機制是時間換空間因惭,那threadlocal就是空間換時間
  • 為了安全使用ThreadLocal,必須像每次使用完鎖就解鎖一樣绩衷,在每次使用ThreadLocal后都要調(diào)用remove()來清理無效的Entry
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蹦魔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子咳燕,更是在濱河造成了極大的恐慌勿决,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件招盲,死亡現(xiàn)場離奇詭異低缩,居然都是意外死亡,警方通過查閱死者的電腦和手機曹货,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門咆繁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人顶籽,你說我怎么就攤上這事玩般。” “怎么了蜕衡?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵壤短,是天一觀的道長。 經(jīng)常有香客問我慨仿,道長久脯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任镰吆,我火速辦了婚禮帘撰,結果婚禮上,老公的妹妹穿的比我還像新娘万皿。我一直安慰自己摧找,他們只是感情好核行,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蹬耘,像睡著了一般芝雪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上综苔,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天惩系,我揣著相機與錄音,去河邊找鬼如筛。 笑死堡牡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的杨刨。 我是一名探鬼主播晤柄,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼妖胀!你這毒婦竟也來了芥颈?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤赚抡,失蹤者是張志新(化名)和其女友劉穎浇借,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體怕品,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年巾遭,在試婚紗的時候發(fā)現(xiàn)自己被綠了肉康。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡灼舍,死狀恐怖吼和,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骑素,我是刑警寧澤炫乓,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站献丑,受9級特大地震影響末捣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜创橄,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一箩做、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妥畏,春花似錦邦邦、人聲如沸安吁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鬼店。三九已至,卻和暖如春黔龟,著一層夾襖步出監(jiān)牢的瞬間妇智,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工捌锭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俘陷,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓观谦,卻偏偏與公主長得像拉盾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子豁状,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容