Jetzt bin ich mir nicht sicher, ob das eine dumme Frage ist, bitte ertragen Sie mit mir, wenn es ist.Java: Was ist, wenn überhaupt, durch synchronisierte Methoden gesperrt, abgesehen von dem Objekt, zu dem sie gehören?
Ist die Sperre für ein Objekt "rekursiv", d. e. Wenn zwei Objekte Referenzen auf ein drittes Objekt in ihren Feldern haben und ein Thread eine synchronisierte Methode auf einer der beiden ausführt, kann ein anderer Thread auf das dritte Objekt zugreifen?
// a and b are some objects that implement Runnable
// they both reference the same third object
a.ref = c;
b.ref = c;
// a is run in a thread and processes some data in a loop for a long time
// the method the loop belongs to is declared synchronized
threadA = new Thread(a);
threadA.start();
a.someSyncedMethod(); // this would block ...
b.ref.someOtherSyncedMethod(); // ... but would this?
a.ref.someOtherSyncedMethod(); // ... and how about this?
Es ist überhaupt keine blöde Frage - nur eine einfache Frage. Kein Problem, um ein besseres Verständnis der Sprachgrundlagen zu bekommen –
Danke. Ich dachte, das sollte irgendwie offensichtlich sein, aber ich habe es immer noch nicht verstanden. –