Originariamente inviato da Java_Machine
allora alle volte tipo una volta su 4 che testo il mio programma mi da questa IllegalMonitorStateException, vi posto la sezione di codice..
Una regola fondamentale nell'uso di wait/notify è che questi metodi vanno invocati esclusivamente su un oggetto di cui si possiede il lock. Altrimenti viene appunto lanciata la eccezione IllegalMonitorStateException.

Ora ... dal codice si vede che c'è un notify() che è invocato su un oggetto di cui si possiede certamente il lock (c'è il synchronized su quell'oggetto). Vedo che c'è anche un wait() ma non si capisce se in quel punto si possiede il lock sul 'this' (l'oggetto corrente).