Ciao a tutti!
Avrei bisogno di alcune chiarificazioni riguardo il funzionamento della sincronizzazione usanda i metodi wait e notifyAll.
Di base, il metodo wait, se chiamato, rilascia il lock sull'oggetto e il metodo notifyAll sveglia tutti i thread dal wait set in attesa su quell'oggetto e solo uno verrà eseguito.
Ma leggendo il codice, non capisco bene il giro del fumo che fa il codice dopo la chiamata al metodo wait(). Dopo la chiamata a wait(), come il codice raggiunge il metodo notifyAll() ???
Per esempio su questo semplice codice: supponendo che lancio n thread dal main e li gestisco con un ciclo FOR.
codice:public synchronized void waitMethod() { try{ wait(1000); System.out.println("DONE! " ); } catch (InterruptedException e) { // TODO: handle exception } notifyAll(); }

Rispondi quotando