Visualizzazione dei risultati da 1 a 5 su 5

Visualizzazione discussione

  1. #1

    [JAVA] produttori, consumatori e lettori

    Ciao a tutti, sto entrando nel mondo della programmazione ad oggetti, ed ho un dubbio riguardo produttori consumatori ecc..
    In pratica sto cercando di fare un esercizio e non so se lo sto facendo bene. Tralasciando creazioni di classi e cose varie, il fulcro è: devo utilizzare 3 thread per gestire una TreeMap:

    Thread 1: inserisce un nuovo elemento nella mappa...
    l'inserimento deve essere concorrente rispetto agli altri thread, secondo uno schema di produttori/consumatori

    Thread 2: visualizza dei dati della mappa...
    la lettura deve essere concorrente rispetto gli altri thread, secondo uno schema di lettori/consumatori

    Thread 3: cancella degli elementi dalla mappa...
    l'eliminazione deve essere concorrente rispetto agli altri thread, secondo uno schema di produttori/consumatori.


    Ora io questa cosa la intendo così: thread 1 è un produttore, thread 3 è un consumatore, thread 2 è un lettore e Thread1-thread3 si possono intendere come "scrittori".

    Se non sbaglio, nello schema produttori/consumatori, nel metodo "put" (quello del produttore) il thread si deve mettere in wait() quando la mappa è piena, mentre nel metodo "remove" (quello del consumatore) il thread si deve mettere in wait() quando la mappa è vuota.

    Mentre nello schema lettori/scrittori, un lettore non può leggere durante la scrittura di uno scrittore (e viceversa) quindi per esempio (nel mio caso) uso i lock (e quindi il lettore se writeLock è true aspetta, se false va, mentre uno scrittore se readLock è true aspetta altrimenti va). Giusto fin qui?

    Se è giusto, l'esercizio che ho appena scritto, sarebbe un insieme di queste cose, giusto?

    Quindi sarebbe una cosa del tipo:

    /*produttore*/
    while (readLock || "mappa piena")
    wait();


    /*consumatore*/
    while (readLock || "mappa vuota")
    wait();


    /*lettore*/
    while (consLock || prodLock)
    wait();


    Confermate?
    Ultima modifica di gabriele90; 10-07-2015 a 21:10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.