Auf Thema antworten

Letztlich ist es auch bei statischen Variablen dieser Fall. Bei einem static Block ist der Lock immer auf dem Objekt, welches von dem Ausdruck (bei dir) 'name' zurückgeliefert wird.

Es geht also nicht darum, dass 'name' ein Name ist, sondern immer nur ein Ausdruck. Das kann nur eine Variablenreferenz sein oder eben auch ein Methodenaufruf.


Der Lock befindet sich also in deinem Fall immer auf jenem Objekt, welches zu dem Aufrufzeitpunkt in der statischen Variablen gespeichert ist.


Darüber hinaus ist es sehr dubios, dass im Konstruktor von Person der Wert einer statischen Variablen auf der Klasse gesetzt wird.



Oben