Ciao a tutti, devo svolgere un esercizio che preveda l'uso di synchronized, wait e notify per implementare una variante del problema "classico" produttori-consumatori. Ho N thread, ogni thread scrive il proprio nome in una variabile, attende che tutti gli altri lo leggano e muore. Non riesco a capire il flusso di esecuzione del seguente codice:
codice:
synchronized(monitor){
while(condition){
//i'm a writer
condition = false;
doStuffs();
monitor.notifyAll(); //wake up, readers!
monitor.wait(); //waiting other thread reading
canWrite = true;
return;
}
monitor.wait();
if(stuffs) monitor.notify();
}
Edit: Primo problema risolto, ma ne ho un'altro.
La chiamata monitor.notifyAll() non mi sveglia i thread in attesa su quel monitor (definito come static Object monitor = new Object(); ) ...
Grazie in anticipo!