Wenn ein Java-Mitglied sein, Thread-sicher braucht, haben wir wie folgt aus:Wie funktioniert eine statische Synchronisierungsfunktion?
public synchronized void func() {
...
}
Diese Syntax entspricht:
public void func() {
synchronized(this) {
....
}
}
Das heißt, es tatsächlich nutzt this
für ein Schloss.
Meine Frage ist, wenn ich synchronized
mit einer static
Methode verwenden, wie folgt:
class AA {
private AA() {}
public static synchronized AA getInstance() {
static AA obj = new AA();
return obj;
}
}
In diesem Fall auf dem, was ist das Schloss für die synchronized
Verfahren gemacht?
Die Klasse AA wird gesperrt 'synchronisiert (AA.class)', aber keine Instanzen –
Ist das nicht die statische Deklaration der lokalen Variablen 'obj' einen Syntaxfehler? – Thilo