Questo è un seguito alla mia precedente domanda non risposta, quindi cerco di rendere più chiaro: ultima domanda .
Ho un buffer di dimensione n che viene riempito da una fonte esterna, ha 2 metodi principali get () e add (), get () blocks (via wait ()) se il buffer è vuoto e add () blocca se il buffer è pieno.
Questo riferimento all'oggetto buffer è disponibile per più utenti (thread).
Ogni consumatore legge i dati dal buffer indipendentemente dagli altri consumatori.
Tutti i consumatori devono leggere TUTTI i dati dal buffer.
Come suggerito da qualcuno, ho creato una hashmap dove key è un id del consumatore e value è l'indice all'interno del buffer letto da questo utente.
Il problema è che ogni consumatore continua a richiedere dati dal buffer. Ho bisogno in qualche modo di bloccarlo fino a quando il prossimo dataitem non sarà disponibile nel buffer.
Dove e come dovrei bloccarlo?
(Non posso usare wait () nell'oggetto consumer, perché il produttore non può chiamare notify ()
dal momento che produttore e consumatore sono oggetti diversi)