/** Un Producer è un thread associato a una coda. Il thread non termina mai, e * produce ogni volta un carattere a caso (fra 'A' e 'Z') e lo scrive nella coda. * Se la coda è piena, aspetta finché c'è posto. Quindi aspetta un tempo casuale * fra 0 e un numero dato di millisecondi. */ public class Producer extends Thread { /** Coda in cui il thread scrive. */ private Queue q; /** Millisecondi massimi di attesa. */ private int maxWait; public Producer( Queue q, int maxWait ) { this.q = q; this.maxWait = maxWait; } public void run() { while( true ) { char c = (char) ( 'A' + Math.random()*26 ); q.enqueue( new Character( c ) ); // Ora aspetta try { Thread.currentThread().sleep( (int) Math.random()*maxWait ); } catch ( InterruptedException e ) { break; } } } }