Buonasera a tutti,
ho scritto un programma in programmazione concorrente, usando semafori binari e contatori per proteggere le variabili condivise e ho fatto varie prove modificando il numero di thread di alcune classi.
Fino a 50 thread il programma va perfettamente, infatti credevo che il programma non avesse errori.
Ma dagli 80 thread in poi il programma termina ma genera un sacco di eccezioni, del tipo
at java.base/java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:149)
at java.base/java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1302)
at java.base/java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:439)
oppure
Exception in thread "Sensore_55" java.lang.IllegalMonitorStateException
Quest'ultima eccezione compare nonostante io non abbia usato monitor.
La mia domanda è : può il problema non essere dovuto al mio codice ma al numero elevato di thread che in qualche modo confliggono?