java 關(guān)于鎖常見面試題

1、synchronized作用于靜態(tài)方法和非靜態(tài)方法的區(qū)別

非靜態(tài)方法:

給對象加鎖(可以理解為給這個對象的內(nèi)存上鎖,注意 只是這塊內(nèi)存,其他同類對象都會有各自的內(nèi)存鎖),這時候在其他一個以上線程中執(zhí)行該對象的這個同步方法(注意:是該對象)就會產(chǎn)生互斥

靜態(tài)方法: 相當(dāng)于在類上加鎖(*.class

位于代碼區(qū),靜態(tài)方法位于靜態(tài)區(qū)域,這個類產(chǎn)生的對象公用這個靜態(tài)方法,所以這塊內(nèi)存包个,N個對象來競爭),

這時候,只要是這個類產(chǎn)生的對象,在調(diào)用這個靜態(tài)方法時都會產(chǎn)生互斥。即該類所有的對象都共享一把鎖。

2普泡、當(dāng)一個線程進(jìn)入一個對象的synchronized方法A之后齿坷,其它線程是否可進(jìn)入此對象的synchronized方法B厦坛?

不能桦锄。其它線程只能訪問該對象的非同步方法,同步方法則不能進(jìn)入抠忘。因為非靜態(tài)方法上的synchronized修飾符要求執(zhí)行方法時要獲得對象的鎖撩炊,如果已經(jīng)進(jìn)入A方法說明對象鎖已經(jīng)被取走,那么試圖進(jìn)入B方法的線程就只能在等鎖池(注意不是等待池哦)中等待對象的鎖

3崎脉、線程同步的幾種方式

synchronized修飾

volatile實現(xiàn)同步(只能保證可見性衰抑,不能保證原子性)

使用局部變量ThreadLocal

使用原子類(AtomicInteger、AtomicBoolean……)

使用Lock

使用容器類(BlockingQueue荧嵌、ConcurrentHashMap)

4呛踊、synchronized和java.util.concurrent.locks.Lock的異同?

答:Lock 和 synchronized 有一點明顯的區(qū)別 —— lock 必須在 finally 塊中釋放啦撮。否則谭网,如果受保護(hù)的代碼將拋出異常,鎖就有可能永遠(yuǎn)得不到釋放赃春!這一點區(qū)別看起來可能沒什么愉择,但是實際上,它極為重要织中。忘記在 finally 塊中釋放鎖锥涕,可能會在程序中留下一個定時炸彈,當(dāng)有一天炸彈爆炸時狭吼,您要花費很大力氣才有找到源頭在哪层坠。而使用同步,JVM 將確保鎖會獲得自動釋放刁笙。

一個 Lock 對象和一個 synchronized 代碼塊之間的主要不同點是:

synchronized 代碼塊不能夠保證進(jìn)入訪問等待的線程的先后順序破花。 你不能夠傳遞任何參數(shù)給一個 synchronized

代碼塊的入口。因此疲吸,對于 synchronized 代碼塊的訪問等待設(shè)置超時時間是不可能的事情座每。 synchronized

塊必須被完整地包含在單個方法里。而一個 Lock 對象可以把它的 lock() 和 unlock() 方法的調(diào)用放在不同的方法里摘悴。

5峭梳、樂觀鎖和悲觀鎖的理解及如何實現(xiàn),有哪些實現(xiàn)方式蹂喻?

樂觀鎖葱椭,每次操作時不加鎖而是假設(shè)沒有沖突而去完成某項操作捂寿,如果因為沖突失敗就重試,直到成功為止

悲觀鎖是會導(dǎo)致其它所有需要鎖的線程掛起挫以,等待持有鎖的線程釋放鎖者蠕。

樂觀鎖可以使用volatile+CAS原語實現(xiàn)窃祝,帶參數(shù)版本來避免ABA問題掐松,在讀取和替換的時候進(jìn)行判定版本是否一致

悲觀鎖可以使用synchronize的以及Lock

6、Synchronized有哪些缺點粪小?

只有一個condition與鎖相關(guān)聯(lián)大磺,這個condition是什么?就是synchronized對針對的對象鎖探膊。

synchronized無法中斷一個正在等待獲得鎖的線程杠愧,也即多線程競爭一個鎖時,其余未得到鎖的線程只能不停的嘗試獲得鎖逞壁,而不能中斷流济。這種情況對于大量的競爭線程會造成性能的下降等后果。

7腌闯、我們面對ReentrantLock和synchronized改如何選擇绳瘟?

Synchronized相比Lock,為許多開發(fā)人員所熟悉姿骏,并且簡潔緊湊糖声,如果現(xiàn)有程序已經(jīng)使用了內(nèi)置鎖,那么盡量保持代碼風(fēng)格統(tǒng)一分瘦,盡量不引入Lock蘸泻,避免兩種機制混用,容易令人困惑嘲玫,也容易發(fā)生錯誤悦施。在Synchronized無法滿足需求的情況下,Lock可以作為一種高級工具去团,這些功能包括“可定時的歼争、可輪詢的與可中斷的鎖獲取操作,公平隊列渗勘,以及非塊結(jié)構(gòu)的鎖”否則還是優(yōu)先使用Synchronized沐绒。最后,未來更可能提升Synchronized而不是Lock的性能旺坠,因為Synchronized是JVM的內(nèi)置屬性乔遮,他能執(zhí)行一些優(yōu)化,例如對線程封閉的鎖對象的鎖消除優(yōu)化取刃,通過增加鎖的粒度來消除內(nèi)置鎖的同步蹋肮,而如果基于類庫的鎖來實現(xiàn)這些功能出刷,則可能性不大

8、死鎖產(chǎn)生的四個條件

互斥條件:資源是獨占的且排他使用坯辩,進(jìn)程互斥使用資源馁龟,即任意時刻一個資源只能給一個進(jìn)程使用,其他進(jìn)程若申請一個資源漆魔,而該資源被另一進(jìn)程占有時坷檩,則申請者等待直到資源被占有者釋放。

不可剝奪條件:進(jìn)程所獲得的資源在未使用完畢之前改抡,不被其他進(jìn)程強行剝奪矢炼,而只能由獲得該資源的進(jìn)程資源釋放。

請求和保持條件:進(jìn)程每次申請它所需要的一部分資源阿纤,在申請新的資源的同時句灌,繼續(xù)占用已分配到的資源。

循環(huán)等待條件:在發(fā)生死鎖時必然存在一個進(jìn)程等待隊列{P1,P2,…,Pn},其中P1等待P2占有的資源欠拾,P2等待P3占有的資源胰锌,…,Pn等待P1占有的資源藐窄,形成一個進(jìn)程等待環(huán)路资昧,環(huán)路中每一個進(jìn)程所占有的資源同時被另一個申請,也就是前一個進(jìn)程占有后一個進(jìn)程所深情地資源

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枷邪,一起剝皮案震驚了整個濱河市榛搔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌东揣,老刑警劉巖践惑,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘶卧,居然都是意外死亡尔觉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門芥吟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侦铜,“玉大人,你說我怎么就攤上這事钟鸵《ど裕” “怎么了?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵棺耍,是天一觀的道長贡未。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么俊卤? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任嫩挤,我火速辦了婚禮,結(jié)果婚禮上消恍,老公的妹妹穿的比我還像新娘岂昭。我一直安慰自己,他們只是感情好狠怨,可當(dāng)我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布约啊。 她就那樣靜靜地躺著,像睡著了一般取董。 火紅的嫁衣襯著肌膚如雪棍苹。 梳的紋絲不亂的頭發(fā)上无宿,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天茵汰,我揣著相機與錄音,去河邊找鬼孽鸡。 笑死蹂午,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的彬碱。 我是一名探鬼主播豆胸,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼巷疼!你這毒婦竟也來了晚胡?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤嚼沿,失蹤者是張志新(化名)和其女友劉穎估盘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體骡尽,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡遣妥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了攀细。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箫踩。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谭贪,靈堂內(nèi)的尸體忽然破棺而出境钟,到底是詐尸還是另有隱情,我是刑警寧澤俭识,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布慨削,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏理盆。R本人自食惡果不足惜痘煤,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望猿规。 院中可真熱鬧衷快,春花似錦、人聲如沸姨俩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽环葵。三九已至调窍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間张遭,已是汗流浹背邓萨。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留菊卷,地道東北人缔恳。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像洁闰,于是被迫代替她去往敵國和親歉甚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,925評論 2 344

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