codice:
public
class
Produttore
extends
Thread
{
//* costruttore
public
Produttore
(
MemoriaCircolareS m,
int tam,
int id
)
{
memoria = m;
tempoAttesaMax = tam;
this.id = id;
}
/**
* metodo eseguito quando il thread e' avviato con il metodo start ed ad
* ogni successivo scheduling per l'esecuzione
*/
public
void
run()
{
String dato;
// il produttore genera messaggi all'infinito
while ( true )
{
// sospenda il produttore per un certo periodo di tempo
int tempoAttesa = (int) ( tempoAttesaMax * Math.random() );
System.out.println(
"Produttore " + id + " sospeso per "
+ tempoAttesa + " secondi"
);
try
{
sleep(tempoAttesa*1000);
}
catch(InterruptedException e) {}
contatore++;
dato = new String( "[prodotto " + contatore
+ " del produttore " + id + "]" );
System.out.println("Produttore " + id + " produce " + dato );
// deposita il messaggio sulla memoria
try
{
memoria.deposita( dato );
}
catch ( Exception e )
{
System.err.println( e.toString() );
}
}
}
private MemoriaCircolareS memoria;
private int tempoAttesaMax;
private int id;
private int contatore = 0;
}