Salve ragazzi, qualcuno è in grado di simulare in java l'interazione di n produttori n consumatori con un buffer limitato sincronizzandoli con un meccanismo simile ai messaggi o monitor? Grazie in anticipo!
Salve ragazzi, qualcuno è in grado di simulare in java l'interazione di n produttori n consumatori con un buffer limitato sincronizzandoli con un meccanismo simile ai messaggi o monitor? Grazie in anticipo!
Ciao,
consiglio una bella ricerca su Google, passando al motore di ricerca "java producer consumer". Trovi tutti gli esempi che vuoi.
![]()
Se vuoi la "pappa pronta", segui appunto il consiglio di minomic, ovvero cerca in rete e di esempi ne trovi sicuramente.
Se invece vuoi cercare di comprendere come farlo e quindi svilupparlo da te, allora innanzitutto dovresti precisare meglio il modo di distribuzione dei messaggi da produttore a consumatore. Se ci sono N produttori e M consumatori (con N=M o anche N≠M) quando un produttore invia un messaggio, questo deve essere ricevuto da tutti i consumatori o solo dal primo (qualunque) che arriva ad estrarlo? L'architettura globale dipende anche molto da questo.
Per il passaggio fisico vero e proprio, in genere si usano delle "code", ovviamente opportunamente sincronizzate e thread-safe e tipicamente "bloccanti" (il consumatore si blocca se la coda è vuota e se la coda è limitata in capacità, il produttore si blocca se è piena). Da Java 5 esiste la interfaccia BlockingQueue, con diverse implementazioni già esistenti tra cui due interessanti in questo scenario, cioè ArrayBlockingQueue e LinkedBlockingQueue.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet