欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

【面試官】你先說(shuō)說(shuō)synchronized的實(shí)現(xiàn)原理

  • 面試官:知道可重入鎖有哪些嗎?
  • 面試官:你先說(shuō)說(shuō)synchronized的實(shí)現(xiàn)原理?
  • 面試官:那synchronized有什么缺點(diǎn)?
  • 面試官:為什么上下文切換要保存當(dāng)前線程狀態(tài)?
  • 面試官:可以怎么解決synchronized資源消耗嗎?
  • 面試官:那它們都有什么優(yōu)缺點(diǎn)?

大家好,我是南哥。

一個(gè)Java學(xué)習(xí)與進(jìn)階的領(lǐng)路人,跟著南哥我們一起Java成長(zhǎng)。

文章目錄

  1. 可重入鎖
  2. synchronized實(shí)現(xiàn)原理
    1. synchronized缺點(diǎn)
    2. 保存線程狀態(tài)
    3. 鎖升級(jí)
    4. 鎖升級(jí)優(yōu)缺點(diǎn)

1. 可重入鎖

面試官:知道可重入鎖有哪些嗎?

可重入意味著獲取鎖的粒度是線程而不是調(diào)用,如果大家知道這個(gè)概念,會(huì)更容易理解可重入鎖的作用。

既然獲取鎖的粒度是線程,意味著線程自己是可以獲取自己的內(nèi)部鎖的,而如果獲取鎖的粒度是調(diào)用則每次經(jīng)過(guò)同步代碼塊都需要重新獲取鎖。

舉個(gè)例子。線程A獲取了某個(gè)對(duì)象鎖,但在線程代碼的流程中仍需再次獲取該對(duì)象鎖,此時(shí)線程A可以繼續(xù)執(zhí)行不需要重新再獲取該對(duì)象鎖。另外線程如果要使用父類(lèi)的同步方法,由于可重入鎖也無(wú)需再次獲取鎖。

在Java中,可重入鎖主要有ReentrantLock、synchronized。

2. synchronized實(shí)現(xiàn)原理

面試官:你先說(shuō)說(shuō)synchronized的實(shí)現(xiàn)原理?

synchronized的實(shí)現(xiàn)是基于monitor的。任何對(duì)象都有一個(gè)monitor與之關(guān)聯(lián),當(dāng)monitor被持有后,對(duì)象就會(huì)處于鎖定狀態(tài)。而在同步代碼塊的開(kāi)始位置,在編譯期間會(huì)被插入monitorenter指令。

當(dāng)線程執(zhí)行到monitorenter指令時(shí),就會(huì)嘗試獲取monitor的所有權(quán),如果獲取得到則代表獲得鎖資源。

2.1 synchronized缺點(diǎn)

面試官:那synchronized有什么缺點(diǎn)?

在Java SE 1.6還沒(méi)有對(duì)synchronized進(jìn)行了各種優(yōu)化前,很多人都會(huì)稱(chēng)synchronized為重量,因?yàn)樗鼘?duì)資源消耗是比較大的。

剩余60%內(nèi)容,訂閱專(zhuān)欄后可繼續(xù)查看/也可單篇購(gòu)買(mǎi)

Java面試突擊 文章被收錄于專(zhuān)欄

??以面試官面試的形式,涵蓋了你怒懟大廠面試官、拿下大廠面試所需掌握的核心知識(shí)、面試重點(diǎn)! ??相信一定對(duì)你順利通關(guān)面試、拿到理想Offer有所幫助! ??花費(fèi)大量精力去制作本專(zhuān)欄,創(chuàng)作不易,各位的支持就是我創(chuàng)作的最大動(dòng)力!

全部評(píng)論
666
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2024-04-20 21:49 廣東
2 既然引入了輕量級(jí)鎖,那么你再說(shuō)synchronized資源消耗大 是不是有點(diǎn)歧義
點(diǎn)贊 回復(fù) 分享
發(fā)布于 2024-04-01 20:19 河南

相關(guān)推薦

評(píng)論
18
69
分享

創(chuàng)作者周榜

更多
??途W(wǎng)
牛客企業(yè)服務(wù)