public synchronized int getCountOne() {
return count++;
}
Come nel codice sopra la sincronizzazione del metodo è funzionalmente equivalente ad avere un valore synchronized (this) block
attorno al corpo del metodo. L'oggetto "questo" non diventa bloccato, piuttosto l'oggetto "questo" viene utilizzato come mutex
e il corpo viene impedito di essere eseguito contemporaneamente ad altre sezioni di codice sincronizzate anche su "questo".Come viene acquisito il blocco del livello di classe
Per motivi analoghi quello che viene utilizzato come mutex
quando si acquisisce un livello di classe lock.As a se abbiamo una funzione
public static synchronized int getCountTwo() {
return count++;
}
ovviamente due fili possono ottenere contemporaneamente blocchi su getCountOne (serratura livello oggetto) e getCountTwo (blocco livello di classe). Quindi getCountOne è analogo a
public int getCountOne() {
synchronized(this) {
return count++;
}
}
c'è un equivalente di getCountTwo? Se no, quali criteri vengono utilizzati per ottenere un blocco a livello di classe?
Grazie per Nice Spiegazione – Prabhaker