Teraz nie jestem pewien, czy to jest głupie pytanie, proszę o zachowanie mnie, jeśli tak jest.Java: Co, jeśli w ogóle, jest blokowane przez zsynchronizowane metody oprócz obiektu, do którego należą?
Czy blokada obiektu jest "rekursywna", i. mi. jeśli dwa obiekty mają odniesienia do trzeciego obiektu na swoich polach, a wątek uruchamia zsynchronizowaną metodę na jednym z dwóch, czy jakikolwiek inny wątek może uzyskać dostęp do trzeciego obiektu?
// 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?
To wcale nie jest głupie pytanie - tylko podstawowe. Nie szkodzi, prosząc o lepsze zrozumienie podstaw językowych. –
Dzięki. Czułem, że to powinno być jakoś oczywiste, ale wciąż nie dostałem tego. –