synchronized( ref )

Mark2

Mitglied
ok, das ist keine schwere frage:

Frage 1:
wenn ich sowas habe:

Java:
synchronized( ref )
{
}

bedeutet das, dass 'ref' während es im synchronized block ist, von keiner anderen methode oder anderem objekt mehr benutzt werden kann ('lock' haben)?

Frage 2:
ist so ein synchronized block objekt übergreifend? würde also 'ref' auch den lock behalten, wenn dieser synchronized block in verschiedenen threads aus verschiedenen klassen läuft?

sorry, wenn ich solch triviale frage stelle, aber irgendwie wurde das nirgendwo so richtig erklärt (oder ich habe das nicht gefunden) 🙂.

achja: frohes neues jahr!
 
Dir auch ein frohes neues Jahr,

zu 1.) das ist das Objekt, auf das synchronisiert wird. Dies Objekt enthält die Info, ob der nachfolgende Block
gesperrt ist.

zu 2.) bin mir nicht ganz sicher, aber wenn es sich bei den Objekt um eine Klassenobjekt handelt, müsste
es sich auf alle Instanzen der Klassen beziehen.
Bei einem Instanzobjekt nur auf die entsprechende Instanz.


Edit:
folgender Link kann Dir helfen:
Informatik B SS2007
 
Zuletzt bearbeitet:
wichtig ist die Erkenntnis, dass synchronized für sich gar nichts erreicht,
jeder andere Thread kann mit dem Objekt immer noch ne Menge anstellen,

erst wenn andere Programmstellen AUCH synchronized( ref ) {} verwenden, dann kann man sagen,
dass sich immer nur ein Thread in irgendeinem dieser synchronized-Blöcke aufhalten kann, ganz wie es im Lehrbuch steht,
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 11 Threads und nebenläufige Programmierung

wenn andere Threads Methoden des Objektes ausführen wollen und diese Methoden als synchronized deklariert sind, dann kann man diese Methoden gar nicht anders als synchronisiert ausführen
 
ok, verstanden. so wie ihr es beschrieben habt, scheine ich es verstanden zu haben.

kurz wiederholt. wenn also der lock im objekt gespeichert wird, dann ist es also völlig egal wo der synchronized block ist und der lock (vom objekt) "aktiviert" wird. auch kann ein synch.block (in einer methode) verschiedene locks aktivieren. das ist gut!

übrigens habe ich mir java insel kap. 11 schon oft durchgelesen, aber nicht das bekommen was ich gesucht habe; deshalb vielen dank für eure hilfe.
 

Zurück
Oben