Quando un membro Java deve essere thread-safe, facciamo come la seguente:Come funziona una funzione sincronizzata statica?
public synchronized void func() {
...
}
Questa sintassi equivalente a:
public void func() {
synchronized(this) {
....
}
}
Cioè, si usa in realtà this
per una serratura.
La mia domanda è, se uso synchronized
con un metodo static
, come segue:
class AA {
private AA() {}
public static synchronized AA getInstance() {
static AA obj = new AA();
return obj;
}
}
In questo caso, su ciò che è la serratura fatta per il metodo synchronized
?
La classe AA sarà bloccato 'sincronizzati (AA.class)', ma nessuna istanza –
non è la dichiarazione statica della variabile locale 'obj' un errore di sintassi? – Thilo