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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

监视器和锁

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

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。