Stellen Sie sich eine Situation vor, in der mehrere Prozesse versuchen, eine gemeinsam genutzte Ressource zu verwenden.Etwas über kritische Abschnitte
Sie können es mit einem Java-Monitor (zum Beispiel - synchronisierte Methoden) schützen.
Aber was, wenn Ihre Klassen diesem Protokoll folgen müssen?
Anforderungsmethode - kritische Abschnitt - Ende Methode
Jeder Prozess ist die einzigen, der die Anfrage und Endmethoden Ausführung gleichzeitig dank der synchronisierten Blöcke, aber was ist mit dem Kern des kritischen Abschnitts?
Mit anderen Konstrukten wie Semaphoren oder Lock/Condition können Sie es leicht machen, aber mit nativen Monitor sind Sie daran gebunden, dass eine Synchronisation durch einen Block identifiziert wird, der nicht mehrere Methoden durchlaufen kann.
Wenn Sie eine boolean
verwenden, die Ihnen sagt, ob die Ressource beschäftigt ist (Aufruf wait()
direkt danach) oder nicht, kann Deadlock auftreten!
Also, was könnte eine gute Lösung dafür sein?
Sie sollten auf jeden Fall diese stattdessen in zwei getrennte Fragen aussehen aufzuschlüsseln. Sie können hier eine Frage auswählen und die andere für etwas später verlassen. – Makoto
Sie können sogar den anderen gleichzeitig posten. –
Do stuff -> Anruf synchronisierte Methode für Ihren kritischen Abschnitt -> Do Zeug – user2677821