Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

PROBLEMA PRODUTTORE-CONSUMATORE


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 6 risposta/e

#1
sabatinof

sabatinof

    Advanced Member

  • Utente
  • StellaStellaStella
  • 137 Messaggi:
Salve ragazzi,ho un problema con la seguente traccia d'esame.Non ho capito come fare a rimuovere e ritornare un singolo conteiner da una coda,sto provando da molto tempo ma quando mando in esecuzione produce solo senza rimuovere.Qualcuno di buona volontà che lo ha già fatto o che sà come fare può scrivermi solo i metodi di inserimento e rimozione dal buffer? Grazie anticipatamente.

File allegato





#2
Blackjack

Blackjack

    Moderatore globale

  • Moderatore
  • 2542 Messaggi:
Probabilmente sarebbe più chiarificatore se postassi il codice che ti dà il problema, comunque il metodo per rimuovere e ritornare il container in cima ad una coda è il metodo poll definito nell'interfaccia java.util.Queue. Adesso non so come è strutturato il vostro corso, è passato un po' di tempo da quando l'ho seguito io, ma se puoi usare tutte le classi presenti nella libreria standard del java allora dato che stai usando più thread devi usare la classe ConcurrentLinkedQueue per le code.
Immagine inviata
Immagine inviata
Immagine inviata

"L'amore è la capacità di avvertire il simile nel dissimile"

#3
Ryuji

Ryuji

    Advanced Member

  • Utente
  • StellaStellaStella
  • 523 Messaggi:
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)!

#4
Ryuji

Ryuji

    Advanced Member

  • Utente
  • StellaStellaStella
  • 523 Messaggi:
non l'ha fatto nessuno? XD

#5
ildiabolico

ildiabolico

    Advanced Member

  • Utente
  • StellaStellaStella
  • 405 Messaggi:
Scusa ma da una rapida occhiata e con una soluzione molto molto molto grezza (e poco modulare) non puoi usare una JOptionPane nella funzione dove fai il controllo delle varie condizioni pecificando quindi i messaggi di errore? Se il tuo problema è solo una stampa basta questo. . .
Rappresentante degli studenti al Consiglio Didattico di Ing. Informatica
Rappresentante degli studenti in Commissione Didattica di Ing. Informatica
Mail >> darioderosa89@gmail.com

#6
Ryuji

Ryuji

    Advanced Member

  • Utente
  • StellaStellaStella
  • 523 Messaggi:
Uhm... il mio problema rimarrebbe comunque quello di dover catturare l'evento e associarlo all'output verso l'utente, indipendentemente dal fatto che lo inserisco nella textarea o lo visualizzo con la JOptionPane!

#7
ildiabolico

ildiabolico

    Advanced Member

  • Utente
  • StellaStellaStella
  • 405 Messaggi:
Dunque se fai una gestione ad eventi parliamo di pressioni di bottoni o cmq eventi che non puoi generare tu. Per come hai esposto la questione ti ripeto...dovrebbe basta na stampa qnd entra nel controllo... se poi la questione è diversa puoi provare a farmi un esempio e ne ragioniamo ;)
Rappresentante degli studenti al Consiglio Didattico di Ing. Informatica
Rappresentante degli studenti in Commissione Didattica di Ing. Informatica
Mail >> darioderosa89@gmail.com




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi