Lock vs Monitor

參考資料:
1:https://howtodoinjava.com/java/multi-threading/multithreading-difference-between-lock-and-monitor/
2:https://www.cnblogs.com/noteless/p/10394054.html
3:https://www.cnblogs.com/keeplearnning/p/7020287.html
4:https://wangxinchun.iteye.com/blog/2367654

java面試中比較常見的問題剂娄,籠統(tǒng)的說:lock是monitor更深層的實現(xiàn)方式冈闭。下面還是詳細回憶下帅掘,昨日學習內(nèi)容。

糾正:

  • lock為實現(xiàn)monitor提供了必要的支持

鎖(lock):

鎖是對象頭里的一個邏輯結構这难,當線程持有該對象的鎖時(synchronize關鍵字),其他線程若想訪問該資源對象,則必須等待持有者線程釋放鎖恢恼。

糾正:

  • 在堆內(nèi)存中,鎖是對象頭中的一種邏輯數(shù)據(jù)

補充:

  • JVM中每個對象都擁有一個鎖(或互斥鎖)
  • 任何程序都可以使用它胰默,來對該對象多線程訪問的協(xié)調(diào)场斑。即:任何現(xiàn)場想訪問該對象的實例變量漓踢,則必須持有該對象的鎖(在鎖內(nèi)存區(qū)域設置一些值),所有其他想訪問該對象的線程漏隐,必須等待持有鎖的線程釋放該對象的鎖(改變標記)

注意:

  • java中喧半,類對象、實例對象是不同的對象
// 鎖的是ClassObjLock類對象
public void ClassObjLock() {
  public void classLock() {
    synchronized(getClass()) {
      dosomethings...
    }
  }
}
猜測:
以上代碼青责,若某線程調(diào)用classLock方法挺据,在執(zhí)行完成該方法前(即未釋放鎖)
那么另一線程進行構造對象操作:new ClassObjLock() 是否會報錯?
**猜測會報錯**

// 鎖的是ClassObjLock類的實例對象
public void InstanceObjLock() {
  public  void InstanceLock() {
    // this指向每個由該類構造的實例對象
    synchronized(this) {
      dosomethings...
    }
  }
}

java變量詳解

監(jiān)視器(monitor):

監(jiān)視器是一個邏輯結構脖隶,可以比作是一個建筑物扁耐,建筑物里有一間特殊的房間,稱為資源對象产阱。線程進入房間獲取資源前婉称,需先進入建筑物,若資源對象被其他線程持有构蹬,那后續(xù)進入的線程王暗,將在入口集(entry set)中等待。某線程在對資源對象處理完成后庄敛,將會釋放對象瘫筐,并退出監(jiān)視器。

糾正:

  • 特殊房間只是一個實例對象铐姚,一般包含了需要并發(fā)訪問的數(shù)據(jù)策肝。同一時刻只能有一個線程訪問該房間(獨占)
  • 相關名詞:
    1. 進入建筑物 -- 進入監(jiān)視器 2. 嘗試進入房間 -- 獲取監(jiān)視器 3. 占有房間 -- 持有監(jiān)視器 3. 退出房間 -- 釋放監(jiān)視器 4. 退出建筑物 -- 退出監(jiān)視器
  • 監(jiān)視器有互斥合作兩種模式(理解錯誤 !!!
  • 監(jiān)視器使線程同時具有互斥合作的特點
    1. 互斥:使用Lock
      入口集排隊 --> 獲取鎖,持有監(jiān)視器 --> 釋放鎖隐绵,釋放監(jiān)視器 --> 退出監(jiān)視器之众。在該模式下,不需要使用到等待集依许。
    2. 合作:使用等待集(wait-set)棺禾,即等待某些條件變?yōu)檎?br> 一個線程需要一些處于特定狀態(tài)的數(shù)據(jù),另一線程則負責將該數(shù)據(jù)置為該狀態(tài)時峭跳,合作是非常重要的膘婶。如:消費者/生產(chǎn)者模式:讀線程需要緩沖區(qū)非空狀態(tài)時,才能從緩沖區(qū)中讀取任何數(shù)據(jù)蛀醉,若讀線程發(fā)現(xiàn)緩沖區(qū)為空悬襟,則必須等待,寫線程則負責寫入數(shù)據(jù)拯刁。 也稱:Wait and NotifySignal and Continue監(jiān)視器脊岳,因為它(等待線程 疑問1)保留了監(jiān)視器的所有權(不是持有鎖! 疑問2),并在需要時繼續(xù)執(zhí)行監(jiān)視區(qū)域(同步代碼塊)割捅;稍后奶躯,通知線程釋放監(jiān)視器,等待線程被喚醒去獲取鎖亿驾。

2019-07-20 8:37:00
疑問:

  1. 它指代什么嘹黔?等待線程?理由是什么莫瞬?
  2. 保留監(jiān)視器的所有權参淹,是指什么?持有鎖嗎乏悄?理由是什么浙值?

注意:

  • 監(jiān)視器是邏輯結構,也就說是一種模型檩小,并不像Lock一樣實實在在的存在于內(nèi)存中
  • jvm中开呐,每一個對象都有一個鎖,同時也綁定了一個監(jiān)視器规求,其中監(jiān)視器用來協(xié)調(diào)多個線程訪問同一對象的的執(zhí)行順序

2019-07-18 22:20:00
疑問:

  1. 等待集有什么用筐付?里面的線程,如何退出阻肿?
    2019-07-20 10:08:00
    在互斥時瓦戚,不需要等待集;在合作時丛塌,等待集一般通過java中的wait關鍵字實現(xiàn)较解。
    等待集的線程不存在退出說法,只有持有監(jiān)視器的線程赴邻,才能數(shù)據(jù)狀態(tài)不滿足的情況下印衔,進入等待集等待或直接退出監(jiān)視器。參考資料3
image

監(jiān)視器-合作模式
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姥敛,一起剝皮案震驚了整個濱河市奸焙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彤敛,老刑警劉巖与帆,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異墨榄,居然都是意外死亡玄糟,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進店門渠概,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茶凳,“玉大人嫂拴,你說我怎么就攤上這事播揪≈” “怎么了?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵猪狈,是天一觀的道長箱沦。 經(jīng)常有香客問我,道長雇庙,這世上最難降的妖魔是什么谓形? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮疆前,結果婚禮上寒跳,老公的妹妹穿的比我還像新娘。我一直安慰自己竹椒,他們只是感情好童太,可當我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著胸完,像睡著了一般书释。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赊窥,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天爆惧,我揣著相機與錄音,去河邊找鬼锨能。 笑死扯再,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的址遇。 我是一名探鬼主播叔收,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼傲隶!你這毒婦竟也來了饺律?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤跺株,失蹤者是張志新(化名)和其女友劉穎复濒,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乒省,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡巧颈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了袖扛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砸泛。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡十籍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出唇礁,到底是詐尸還是另有隱情勾栗,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布盏筐,位于F島的核電站围俘,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏琢融。R本人自食惡果不足惜界牡,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漾抬。 院中可真熱鬧宿亡,春花似錦、人聲如沸纳令。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽泊碑。三九已至坤按,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馒过,已是汗流浹背臭脓。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腹忽,地道東北人来累。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像窘奏,于是被迫代替她去往敵國和親嘹锁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,927評論 2 355

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