亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java基本概念監視器實習原理解析

瀏覽:2日期:2022-08-25 18:16:50

大學有一門課程叫操作系統,學習過的同學應該都記得,監視器是操作系統實現同步的重要基礎概念,同樣它也用在JAVA的線程同步中,這篇文章用一種類推的思想解釋監視器”monitor”。

1.什么是監視器

監視器可以看做是經過特殊布置的建筑,這個建筑有一個特殊的房間,該房間通常包含一些數據和代碼,但是一次只能一個消費者(thread)使用此房間,

Java基本概念監視器實習原理解析

當一個消費者(線程)使用了這個房間,首先他必須到一個大廳(Entry Set)等待,調度程序將基于某些標準(e.g. FIFO)將從大廳中選擇一個消費者(線程),進入特殊房間,如果這個線程因為某些原因被“掛起”,它將被調度程序安排到“等待房間”,并且一段時間之后會被重新分配到特殊房間,按照上面的線路,這個建筑物包含三個房間,分別是“特殊房間”、“大廳”以及“等待房間”。

Java基本概念監視器實習原理解析

簡單來說,監視器用來監視線程進入這個特別房間,他確保同一時間只能有一個線程可以訪問特殊房間中的數據和代碼。

2.JAVA中監視器的實現

在JAVA虛擬機中,每個對象(Object和class)通過某種邏輯關聯監視器,為了實現監視器的互斥功能,每個對象(Object和class)都關聯著一個鎖(有時也叫“互斥量”),這個鎖在操作系統書籍中稱為“信號量”,互斥(“mutex “)是一個二進制的信號量。

如果一個線程擁有了某些數據的鎖,其他的線程則無法獲得鎖,直到這個線程釋放了這個鎖。在多線程中,如果任何時候都是我們自己來寫這個信號量,顯然不是很方便,幸運的是,JVM為我們自動實現了這些。

為了使數據不被多個線程訪問,java 提供了同步塊 以及 同步方法兩種實現,一旦一段代碼被嵌入到一個synchronized關鍵字中,意味著放入了監視區域,JVM在后臺會自動為這段代碼實現鎖的功能。

3.JAVA的同步代碼中,哪一部分是監視器?

我們知道JAVA每個對象(Object/class) 都關聯一個監視器,更好的說法應該是每個對象(Object/class)都有一個監視器,對象可以有它自己的臨界區,并且能夠監視線程序列為了使線程協作,JAVA為提供了wait()和notifyAll以及notify()實現掛起線程,并且喚醒另外一個等待的線程,此外這些方法有三種不同版本:

wait(long timeout, int nanos)wait(long timeout) notified by other threads or notified by timeout.notify(all)

這些方法只能在一個同步塊或同步方法中被調用,原因是,如果一個方法不需要相互排斥,不需要監測或線程之間協作,每一個線程可以自由訪問此方法,那就不需要協作。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 大美女香蕉丽人视频网站 | 免费簧网站永久在线播放国产 | 色香婷婷 | 国产激情一区二区三区 | 免费一级毛片在线视频观看 | 久在线 | 人人干人人插 | 正在播放国产夫妻 | 未成人做爰视频www 未成人禁止视频高清在线观看 | 久久久国产精品va麻豆 | 日本特黄特色高清免费视频 | 免费观看黄色在线视频 | 久久综合九色综合97婷婷群聊 | 国产换爱交换乱理伦片的功能 | 最新国产午夜精品视频成人 | 香港经典a毛片免费观看爽爽影院 | 在线视频 一区二区 | 精品国产理论在线观看不卡 | 成人污视频| www.欧美在线观看 | 国产成人高清视频免费播放 | 久久久亚洲国产精品主播 | 私人影院aaaaa毛片 | 亚洲欧美日韩在线 | 亚洲一区欧美日韩 | 国产一级理仑片日本 | 亚洲欧美在线综合 | 久青草国产观看在线视频 | 久久国产精品亚洲一区二区 | 青青偷拍免费视频播放 | 黑人性视频 | 国内一区二区三区精品视频 | 成年美女黄的视频网站 | 最新亚洲手机在线人成网站 | 91视频网址 | 草莓榴莲向日葵十八岁全微糖 | 曰本黄色录像 | 亚洲影视自拍揄拍愉拍 | 免费黄色一级视频 | a级黄色网 | 好好的曰www视频在线观看 |