Monitor Object設計模式

2021-09-02 08:49:10 字數 905 閱讀 6314

這我們得實際開發當中,當遇到併發的應用時,我們總是需要設計乙個這樣的物件,該物件在多執行緒下被呼叫,而呼叫的這些方法都會改變物件自身的狀態,為了避免競爭條件(race condition)的產生,對於這類物件的設計,需要考慮一下問題:

monitor object模式:將被客戶端執行緒併發訪問的物件定義為乙個monitor物件。客戶端執行緒只能通過monitor物件的同步方法使用monitor物件定義的服務。為了防止陷入競爭條件,任一時刻只能有乙個同步方法被呼叫執行。每乙個monitor物件包含乙個monitor鎖。被同步方法用於序列訪問物件的狀態和方法。此外,同步方法可以根據乙個或多個與monitor物件相關的monitor conditions來決定在任何情況下掛起或恢復它們的執行。

monitor object 模式中,主要有四種型別的參與者:

執行序列圖:

1、同步方法的呼叫和序列化。當客戶端呼叫監視者的同步方法時需要獲取其監視鎖。當該監視者物件有其他同步方法正在執行,獲取監視鎖就不成功。此時,客戶端執行緒將會被阻塞直到獲取監視鎖。當客戶端執行緒獲取到監視鎖,將進入臨界區,執行方法中的邏輯,一旦同步方法執行結束,監視鎖將會被釋放,目的是使其他的執行緒有機會使用監視者物件的同步方法服務。

2、同步方法掛起。如果呼叫同步方法的客戶執行緒必須掛起或者有其他不能繼續執行的原因,它能夠在乙個監視條件上等待,這將導致該客戶執行緒暫時釋放監視鎖,並掛起在監事條件上。

3、監視條件通知。乙個客戶執行緒能有通知乙個監視條件,目的是讓乙個先前掛起在乙個監視條件上的執行緒恢復執行。

4、同步方法執行緒恢復。一旦乙個先前被掛起在乙個監視條件上的同步方法執行緒獲取通知,它將會繼續在先前等待的監視條件的電上執行。在被通知執行緒被允許恢復執行同步方法之前,監視鎖將自動被獲取。

設計模式 設計原則與設計模式

一切設計都為了 的可擴充套件性和可讀性,都為了應對變化!我們是基於設計原則的思想,來選擇設計模式去實現,可讀,可擴充套件的目標!核心設計思想 對擴充套件開放,對修改關閉。含義 抽象可變功能,可變功能通過子類擴充套件實現,避免對已有抽象實現的修改。優點 便於擴充套件 核心設計思想 單個方法或單個類或單...

設計模式 設計模式

物件導向程式設計 oop 的基本概念有 封裝,抽象,繼承,多型等,如何開發出可復用的物件導向軟體一直困擾著軟體開發人員。可復用的物件導向技術包括類的繼承,物件的組合和引數化型別 generic gof的巨著 設計模式 總結出可復用的物件導向的23個設計模式,並且歸類成 建立型模式,結構型模式和行為型...

流程設計 設計框架

設計框架wfmc是國際工作流管理聯盟,它於1993年成立,發布了一系列的工作流定義 軟體介面的草案文字,是目前世界上公認的最具權威性的工作流標準制定機構,得到了廣泛的支援和應用。2002年10月25日,wfmc發布了基於xml的流程定義語言1.0版的最終 文字 workflow process de...