Il metodo receive
synchronized String receive ( ) {
// EFFECTS: se this è pieno, restituisce l’ultimo messaggio ricevuto e diventa
// vuoto; altrimenti il thread viene sospeso finché this non diventa pieno
if (!pieno) try {wait ( ); } catch (InterruptedException e) { }
quando il thread consumatore lo invoca, il metodo receive verifica il valore della variabile istanza pieno
- se pieno è true
- aggiorna la variabile pieno
- avverte il thread produttore che il buffer è di nuovo disponibile
- restituisce il messaggio contenuto nel buffer
- se pieno è false
- il thread si mette in attesa fintanto che il produttore non segnala che un nuovo messaggio è disponibile