Was ist die Bedeutung eines Objekts monitor in Java? Warum benutzen Sie dieses Wort?
Beim Lesen von Artikeln über Java threads, ich merke oft den Ausdruck: "der aktuelle thread ist der Besitzer dieses Objekts überwachen". Ich bekomme den Sinn: der thread bekommt das Recht zum betreiben von auf das Objekt. Aber ich bin verwirrt, warum wir den Begriff "Objekt " monitor" anstelle von "Objekt-Sperre"?
Kurz gesagt, ich don T wissen, die Bedeutung des Wortes 'monitor'
Die Frage mag seltsam sein, und einfach. Aber ich wünschte, jemand helfen kann es zu lösen. 3ks
+1 @ulmangt für die einzige, die tatsächlich Ihre Frage zu beantworten: Wir nennen Sie "überwacht", weil das ist, was Hoare rief Sie zurück in 1974.
InformationsquelleAutor jiafu | 2012-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen ulmangt Antwort für links, die erklären, der Begriff "monitor", wie Sie in diesem Zusammenhang.
Warum verwenden Sie den Begriff "monitor" anstatt "lock"? Gut streng genommen, sind die Begriffe bedeuten unterschiedliche Dinge ... vor allem, wenn Sie Sie in der Weise, dass Sie ursprünglich bestimmt waren, verwendet werden.
Einen "lock" ist etwas mit erwerben und release primitive, bestimmte sperren-Eigenschaften; z.B. die exklusive Nutzung oder single writer /multiple reader.
Einen "monitor" ist ein Mechanismus, der sicherstellt, dass kann nur ein thread ausgeführt werden einer bestimmten Abschnitt (oder Abschnitte) der code zu einem bestimmten Zeitpunkt. Dies kann umgesetzt werden mit einem Schloss (und "condition-Variablen", die es ermöglichen, threads zu warten oder das senden von Benachrichtigungen an andere threads, die die Bedingung erfüllt ist), aber es ist mehr als nur eine Sperre. In der Tat, in die Java-Falle, die eigentliche Sperre von einem monitor nicht direkt zugänglich ist. (Kann man einfach nichts sagen " - Objekt.lock ()", um zu verhindern, dass andere threads aus der übernahme der it ... wie kann man mit einem Java -
Lock
Instanz.)Kurz, wenn man sich pedantisch "monitor" ist eigentlich ein besserer Begriff als "Sperre" für das charakterisieren, was Java bietet. Aber in der Praxis werden beide Begriffe fast Synonym.
InformationsquelleAutor Stephen C
Einem monitor ist einfach nur ein Begriff für ein Objekt, dessen Methoden sicher verwendet werden können in einer Multithread-Umgebung.
Gibt es einen tollen Wikipedia-Artikel über Monitore:
http://en.wikipedia.org/wiki/Monitor_(Synchronisation)
Wenn Sie nach unten scrollen, es ist sogar noch eine Abschnitt explizit über Java.
InformationsquelleAutor ulmangt
Einen
synchronized
- block, um eineobject
ist der monitor, der kontrolliert, eine Sperre auf das Objekt. Hier ein BeispielInformationsquelleAutor abbas
Obwohl es spät ist, diese Frage zu beantworten, dachte ich nur fügen Sie in-Fall es sinnvoll ist.
Hier ist ein synchronisierter block von Java-code, der in einem unsynchronisierten Java-Methode
Im Beispiel "diese" verwendet wird, welcher die Instanz ist, die die add-Methode aufgerufen wird.
Einer synchronisierten Instanz-Methode verwendet die Objekt-es gehört als monitor-Objekt.
=> Nur ein thread ausgeführt werden können innerhalb eines Java code-block synchronisiert, auf dem gleichen monitor-Objekt.
InformationsquelleAutor aman
Die Java-Virtual-Maschine verwendet, um Monitore zu unterstützen multithreading. Monitore erreichen dies durch zwei Konzepte - Gegenseitiger Ausschluss während der Ausführung der threads (hier, wo 'sperren' kommt in Bild) und Koordination als Mittel der inter-thread-Kommunikation (hier ist, wo ein Objekt warten und Benachrichtigen Sie Methoden kommen ins Bild).
Lesen Sie den folgenden Teil von "Inside JVM" wird klar, diese Zweifel, ist es sehr schön erklärt hier (Kapitel 20, Thread-Synchronisation) -
https://www.artima.com/insidejvm/ed2/threadsynchP.html
InformationsquelleAutor adityalad
Zitat von Innerhalb der Java Virtual Machine
Monitor
Lock
InformationsquelleAutor Zane XY