日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

监视器和锁

發(fā)布時間:2024/3/24 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 监视器和锁 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
在JVM的規(guī)范中,有這么一些話:
“在JVM中,每個對象和類在邏輯上都是和一個監(jiān)視器相關(guān)聯(lián)的”
“為了實現(xiàn)監(jiān)視器的排他性監(jiān)視能力,JVM為每一個對象和類都關(guān)聯(lián)一個鎖”
“鎖住了一個對象,就是獲得對象相關(guān)聯(lián)的監(jiān)視器”
從這些話,看出監(jiān)視器和對象鎖好像是一回事,那為何要定義兩個東西,若不一樣,他們的關(guān)系如何?
------------------------------------------------------------------------------------------
監(jiān)視器好比一做建筑,它有一個很特別的房間,房間里有一些數(shù)據(jù),而且在同一時間只能被一個線程占據(jù),
進入這個建筑叫做"進入監(jiān)視器",訪問資源時
進入建筑中的那個特別的房間叫做"獲得監(jiān)視器",可以訪問資源時
占據(jù)房間叫做"持有監(jiān)視器",可以訪問資源,并獲得資源鎖
離開房間叫做"釋放監(jiān)視器",釋放鎖
離開建筑叫做"退出監(jiān)視器". 訪問結(jié)束
如果監(jiān)視器被持有,還有線程要訪問房間,此時線程將在房間外排除等候。
------------------------------------------------------------------------------------------
監(jiān)視器:monitor
鎖:lock(JVM里只有一種獨占方式的lock)
進入監(jiān)視器:monitorenter
離開/釋放監(jiān)視器:monitorexit
(monitorenter和monitorexit是JVM的指令)
擁有者:owner

在JVM里,monitor就是實現(xiàn)lock的方式。
monitorenter就是獲得某個對象的lock(owner是當前線程)
monitorexit就是釋放某個對象的lock

在java中,synchronized是唯一實現(xiàn)同步的東西。對于下面的java程序:
synchronized(obj)
{
... ...
}
在class中將被翻譯成
monitorenter(obj)
...
monitorexit(obj)
結(jié)合我上面對這些英文名詞的介紹,很容易理解monitor和lock的關(guān)系。

總結(jié)

以上是生活随笔為你收集整理的监视器和锁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。