Objektsynchronisierung

8

Wenn ein synchronisierter Block für die Synchronisation einer Objektinstanz verwendet wird, konkurrieren Threads um in den impliziten Monitor des Objekts zu gelangen. Und sobald ein bestimmter Thread in den Monitor eindringt, muss jeder andere Thread darauf warten, in ihn einzutreten. Dann

%Vor%

darf keine bestimmten Objekttypen erzwingen. Daher kann jeder Objekttyp hier verwendet werden, da jedes Objekt seinen impliziten Monitor hat.

Bitte antworten Sie mir, ist es wahr?

    
user961690 23.09.2011, 18:02
quelle

2 Antworten

9

Ja, jedes Java-Objekt kann als Monitor fungieren.

Und da dies eine so kurze Antwort ist, ist das für den Bonus ein interessanter Hinweis: Erstellt die JVM für jedes Objekt einen Mutex, um das Schlüsselwort 'synchronized' zu implementieren? Wenn nicht, wie?

Beachten Sie auch, dass C # mit ihren Objekten etwas Ähnliches tut, aber auch Werttypen (die keine Monitore sind)

    
Dilum Ranatunga 23.09.2011, 18:05
quelle
5

Beachten Sie, dass Sie eine Variable, die null enthält, nicht sperren können. Auch wenn Dinge wie Integer Objekte sind, ist int oder float nicht . Sie können Integer oder int[] sperren, aber nicht int .

    
Gabe 23.09.2011 18:11
quelle

Tags und Links