Problema di concorrenza java

Frank2000

Nuovo Utente
26
0
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.png
    errore.png
    172.4 KB · Visualizzazioni: 33

Skills07

Head of Development
Staff Forum
Utente Èlite
35,439
11,502
CPU
Ryzen 7 5800x
Dissipatore
Deepcool gammax l240 v2
Scheda Madre
Aourus Gigabyte X-470 ultra gaming
HDD
Samsung Evo 850 250gb ,2tb x 2 toshiba P300, 256 Ssd silicon power, Samsung evo plus 1tb nvme
RAM
32 gb G.Skill Tridentz 3200 mhz RGB
GPU
Zotac - RTX 3070 Ti Trinity OC
Monitor
ASUS TUF QHD 165hz IPS, ITEK GCF 165hz IPS QHD, Samsung Curvo 144hz QHD
PSU
Seasonic Focus 650w 80 platinum
Case
Coolermaster h500p
Periferiche
Asus Tuf Wireless
Net
Fibra Tim 100mb
OS
Windows 10 Pro 64 bit
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
 

Frank2000

Nuovo Utente
26
0
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 .
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!