Problema di concorrenza java

Pubblicità

Frank2000

Nuovo Utente
Messaggi
26
Reazioni
0
Punteggio
21
Buonasera, ho un problema con questo codice. Vi metto solo la parte dove penso ci sia il problema.
C'è un cloud contenente due buffer circolari a cui possono accedere thread utente il lettura e thread sensori in scrittura.
Ho implementato il codice così :
implementazione thread sensore : https://pastebin.com/e4tk3gNc
implementazione oggetto condiviso cloud : https://pastebin.com/2dMWc1UJ
All'inizio, testando con un numero basso di thread sensori, non mi ero accorto dell'errore, ma con un numero di thread sensore che va dai 60 in più, a un certo punto vengono generate una serie di eccezioni mostrate nell'immagine allegata.
Poi il programma termina.
All'inizio mi chiedevo se il problema potesse essere dovuto all'alto numero di thread, che in qualche modo confliggono e generano eccezioni, visto che mi sono accorto dell'errore testando su un alto numero di thread.
Un aiutino ? grazie :)
 

Allegati

  • errore.webp
    errore.webp
    130.7 KB · Visualizzazioni: 33
Magari se ci spieghi cosa devi fare... vedendo 4 righe di codice non è che diventiamo indovini.

Dicci cosa deve fare il software etc, qualche dettaglio
 
Magari se ci spieghi cosa devi fare... vedendo 4 righe di codice non è che diventiamo indovini.

Dicci cosa deve fare il software etc, qualche dettaglio
Sì scusami.
Praticamente il software simula un ambiente che contiene dei valori di temperatura e luminosità. Questi valori vengono misurati dai sensori e modificati ogni tot da un WeatherConditioner.
Inoltre i sensori, una volta misurati i valori di temperatura e luminosità presenti nell'ambiente, inviano i dati in un Cloud. Nel Cloud è presente un buffer circolare che contien i valori di temperatura e un buffer circolare che contiene i valori di luminosità.
Poi ci sono gli utenti che accedono al Cloud e fanno questo : leggono 4 valori di temperatura e ne fanno la media, leggono 4 valori di luminosità e ne fanno la media.
Quindi c'è l'oggetto Cloud che è un oggetto condiviso tra i thread sensori che inseriscono i parametri misurati e i thread utenti che leggono i dati presenti nei buffer, viene quindi implementato il paradigma produttore consumatore. ho messo solo il codice della classe Cloud e Sensore che dovrebbe contenere l'errore .
 
Pubblicità
Pubblicità
Indietro
Top