Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 6)

javathread.jpeg

Balking-Muster

** balk ** bedeutet anhalten und nach Hause gehen. Baseball Boke ist auch Hindernis. Ähnlich wie das Guarded Suspension-Muster hat auch das Balking-Muster ** Guard-Bedingungen **. Wenn im Balking-Muster die Schutzbedingung nicht erfüllt ist, wird sie sofort unterbrochen. Dies unterscheidet sich vom Guarded Suspension-Muster, das wartet, bis es betriebsbereit ist.

Stellen Sie sich so etwas wie die Funktion zum automatischen Speichern eines Editors vor. Es gibt einen Thread, der regelmäßig den Inhalt der aktuellen Daten in eine Datei schreibt. Speichern Sie nur, wenn der Dateninhalt aktualisiert wird. Die Schutzbedingung ist, dass es einen Unterschied im Dateninhalt gibt, und wenn es keinen Unterschied gibt, wird er zurückgegeben (balk), ohne in die Datei zu schreiben.

(Den gesamten Code finden Sie in diesem Handbuch.)

...
    public synchronized void change(String newContent) { 
        content = newContent; 
        changed = true; 
    } 
 
    public synchronized void save() throws IOException { 
        if (!changed) { //Wenn nicht geändert
            return; //Balken
        } 
        doSave(); 
        changed = false; 
    }
...

Charakter

Die GuardedObject-Rolle ist eine Klasse mit einer geschützten Methode. Wenn die Schutzbedingung erfüllt ist, wird sie sofort ausgeführt, und wenn sie nicht erfüllt ist, kehrt sie zurück, ohne zur eigentlichen Verarbeitung überzugehen. Die GuardedObjec-Rolle verfügt möglicherweise über eine stateChangingMethod, die den Status der Instanz ändert. Im Beispielprogramm spielt die Datenklasse diese Rolle, die Speichermethode entspricht guardedMethod und das Änderungsfeld entspricht stateChangingMethod.

Wann zu verwenden

--Wenn keine Bearbeitung erforderlich ist

...
    public synchronized void init() { 
        if (initialized) { 
            return; 
        } 
        doInit(); 
        initialized = true; 
    }

Eine "Variable, deren Status sich nur einmal ändert", z. B. ein initialisiertes Feld, wird im Allgemeinen als ** Latch ** (Latch) bezeichnet.

Auszeit

Als Zwischenstufe zwischen dem Balking-Muster und dem Guarded Suspension-Muster gibt es eine Problemumgehung, die ** eine bestimmte Zeitspanne wartet, bis die Guard-Bedingung erfüllt ist **. Der Vorgang des Wartens für eine bestimmte Zeitspanne, bis die Schutzbedingung erfüllt ist, und des Gehens, wenn die Bedingung nicht erfüllt ist, wird als ** bewachte Zeit ** oder ** Zeitüberschreitung ** bezeichnet.

    obj.wait(1000) //Warten Sie 1000 Millisekunden

Java kann jedoch nicht zwischen ** notify / notifyAll und Timeout ** unterscheiden.


Beziehung Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithreaded Edition) "(Teil 1) Zusammenfassung der in Java-Sprache (Multi-Thread) erlernten Entwurfsmuster "(Teil 2) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multi-Thread-Edition) "(Teil 3) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multi-Thread-Edition) "(Teil 4) Zusammenfassung der in Java-Sprache erlernten Entwurfsmuster (Multithreaded Edition) "(Teil 5)

Recommended Posts

Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 7)
Zusammenfassung von "In Java gelernte Entwurfsmuster (Multithread Edition)" (Teil 3)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 9)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 6)
Zusammenfassung von "In Java gelernte Entwurfsmuster (Multithread Edition)" (Teil 4)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 5)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 2)
Zusammenfassung von "In Java-Sprache erlernte Entwurfsmuster (Multi-Thread-Edition)" (Teil 1)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 11)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 12)
Zusammenfassung von "In Java gelernten Entwurfsmustern (Multithread Edition)" (Teil 8)
[Java] Zusammenfassung der Entwurfsmuster
Ein kurzer Überblick über Java, das in Klasse 4 gelernt wurde
Zusammenfassung der Grundlagen der Java-Sprache
Ein kurzer Überblick über Java, das in Klasse 3 gelernt wurde
Ein kurzer Überblick über Java, das in Klasse 2 gelernt wurde
Ich las Hiroshi Yuki "Einführung in Designmuster, die in Java gelernt wurden" (SB Creative)
Java-Entwurfsmuster
Was ich in Java gelernt habe (Teil 2) Was sind Variablen?
Ein kurzer Überblick über Java, das im Unterricht gelernt wurde
Zusammenfassung dessen, was ich in Spring Batch gelernt habe
Probieren Sie Designmuster in C-Sprache aus! Erinnerungsmuster - merken wir uns die Speicher der Daten
[Java] Grundlegende Zusammenfassung von Java, die nicht von Progate abgedeckt wird ~ Teil 1 ~
Was ich in Java gelernt habe (Teil 3) Anweisung zur Ausführung von Anweisungen
Zusammenfassung der Implementierung von Standardargumenten in Java
Zusammenfassung der Java-Unterstützung 2018
Zusammenfassung des Java-Entwurfsmusters
Was ich in Java gelernt habe (Teil 4) Bedingte Verzweigung und Wiederholung
[Java] Grundlegende Zusammenfassung von Java, die nicht von Progate abgedeckt wird ~ Teil 2 ・ Liste ~
Road to Java Engineer Part2 Was für eine Sprache ist Java?
[Java] Zusammenfassung der regulären Ausdrücke
[Java] Zusammenfassung der Operatoren (Operator)
Zusammenfassung der Java Math Klasse
[Java] Zusammenfassung der Steuerungssyntax
Java-Implementierung von Tri-Tree
Zusammenfassung der Java-Fehlerverarbeitung
[Java] Zusammenfassung der mathematischen Operationen
Was ich in Java gelernt habe (Teil 1) Java-Entwicklungsablauf und Überblick
Zusammenfassung von ORM "uroboroSQL", das in Enterprise Java verwendet werden kann
[Für Anfänger] Zusammenfassung des Java-Konstruktors
Zusammenfassung des Pakets [Java Silver Study]
Grundlegende Verwendung von Java Optionaler Teil 1
Thread-sicherer Prozess in Java-Sprache
AtCoder 400 Punkte Algorithmus Zusammenfassung (Java Edition)
Liste der in Java 9 hinzugefügten Mitglieder
Führen Sie eine Phrasenanalyse in Java 8 durch (Teil 2).
Liste der in Java 9 hinzugefügten Typen
Zusammenfassung der objektorientierten Programmierung mit Java
Implementierung einer ähnlichen Funktion in Java
Erstellen einer Phrasenanalyse in Java 8 (Teil 1)