Innanzitutto salve a tutti, questo è il mio primo messaggio, spero di riuscire a trovare qualche consiglio.
Spiego il problema:
Ho realizzato una chat in codice java ovviamente con piu thread che vanno a lavorare su dei dati comuni, quali una lista di utenti che viene aggiornata eliminando e aggiungendo elementi o semplicemente ritornando la lista.
Mi chiedevo se bastesse usare synchronized e come poterlo usare, o se usare semafori.codice:public class Sync{ LinkedList<Utente> listaUtenti; public Sync(LinkedList<Utente> lu) { listaUtenti=lu; } //costruttore //UTENTI public LinkedList<Utente> getLista(){ return listaUtenti; } public void EliminaUtente(Utente u){ listaUtenti.remove(u); } public void AggiungiUtente(Utente u){ listaUtenti.add(u); } public Utente getUtente(int i){ return listaUtenti.get(i); }
Se uso synchronized per ogni classe credo non vada bene perchè da come ho capito se un utente impegna il metodo per aggiungere o eliminare un utente, comunque puo essere usato il metodo per leggere gli utenti e questo creerebbe inconsistenza.
Quindi ho pensato, se fosse possibile, render tutta la classe synchronized, ma questo rallenterebbe un pochetto l'accesso.
Ringrazio in anticipo per l'aiuto!

Rispondi quotando