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();
	}