Perché il codice sottostante non causa un deadlock? Voglio dire, dopo chiamo getNumber (.) L'oggetto della classe Test deve essere bloccato, quindi non dovrei essere in grado di accedere a getNumber2 (.).Chiamare un metodo sincronizzato da un metodo sincronizzato, entrambi dello stesso oggetto
class Test() {
synchronized int getNumber(int i){
return getNumber2(i);
}
synchronized int getNumber2(int i) {
return i;
}
public static void main(String[] args) {
System.out.println((new Test()).getNumber(100));
}
}
uscita:
100
Post simile a questo: http://stackoverflow.com/questions/5798637/is-it-safe-to-call-a-synchronized-method-from-another-synchronized-method – Walls
Sì, la domanda è la stessa , ma il contesto è piuttosto diverso. Su questa domanda è stato chiesto di blocco morto, l'altro si tratta di thread sicuro. – Lovera