物件導向設計基礎 監視器

2021-09-22 06:01:02 字數 369 閱讀 9867

1)使用場景:乙個物件可能要訪問共享資源來完成它所要提供的服務,在多執行緒情況下,多個這樣的物件在一起就會產生意想不到的後果,比如競爭。監視器就是在這樣的乙個物件上設定乙個鎖,以保證在給定時間內,只有乙個執行緒可以執行這個物件上的任何乙個方法。

2)例子:我們建立乙個日誌記錄的類

public class filelogger catch (filenotfoundexception ex)  

catch (ioexception ex)  } }

當乙個執行緒執行到乙個物件的同步方法時,它就得到這個物件的乙個鎖,在這個方法執行時這個執行緒就持有這個鎖知道方法執行結束,期間其他執行緒無法拿到這個鎖,也就無法執行這個方法了。當然同步方法是以執行速度開銷作為代價的。

設計模式C 實現 監視器物件

監視器物件設計模式使併發方法的執行同步化,以確保任一時刻僅有乙個方法在物件內執行。別名執行緒安全被動物件。問題場景 應用程式包含被多個執行緒併發呼叫的物件。這些方法通常修改其物件的內部狀態。為了併發執行緒內正確執行,有必要對物件的訪問進行同步和排程。如果客戶機必須顯示的獲取和釋放底層同步機制,如訊號...

監視器和物件鎖

引用自 監視器好比一做建築,它有乙個很特別的房間,房間裡有一些資料,而且在同一時間只能被乙個執行緒佔據,進入這個建築叫做 進入監視器 訪問資源時 進入建築中的那個特別的房間叫做 獲得監視器 可以訪問資源時 佔據房間叫做 持有監視器 可以訪問資源,並獲得資源鎖 離開房間叫做 釋放監視器 釋放鎖 離開建...

Java併發 物件監視器

對於同步塊的實現使用了monitorenter和monitorexit指令,而同步方法則是依靠方法修飾符上的acc synchronized來完成的。無論採用哪種方式,其本質是對乙個物件的監視器進行獲取,而對這個獲取過程是排他的,也就是說同一時刻只能有乙個執行緒獲得到由synchronized所保護...