Non riesco a fare neanche io questa traccia, non riesco proprio a capire come va impostata.
Io ho proceduto così, facendo le seguenti classi:
Produttore: prende in ingresso buffer e container e aggiunge il container nel buffer
Consumatore: prende in ingresso il buffer e dovrebbe restituire l'elemento consumato... ma se io faccio partire il thread del consumatore dove e a chi restituisco il valore di ritorno? il metodo run è void x_x
Main: il main dovrebbe far partire entrambe le interfacce grafiche passando loro il buffer...
GUIProduttore: premendo sul pulsante viene aggiunto il container al buffer, se il buffer è pieno bisogna visualizzare il messaggio "buffer pieno" e penso che il thread rimarrà in attesa finché non si libererà un posto, poi andrà inserito il container nel buffer e infine verrà visualizzato il messaggio di avvenuto inserimento.
GUIConsumatore: rimuove il container dal buffer; se il buffer è vuoto visualizza il messaggio che non c'è disponibilità, il thread rimane in attesa finché non arriva la disponibilità e poi verrà visualizzato il messaggio di avvenuto inserimento!
Il programma funziona, tanto che nella linea di comando visualizzo tutte le operazioni che vengono fatte nel modo corretto, ma non riesco a farlo nell'interfaccia grafica (ho evidenziato il rosso cosa)!