View Full Version : [Java] domanda sui Thread
Gin&&Tonic
06-04-2011, 12:08
Ho scritto un programma , nel quale ho utilizzato Lock ( e Condition) .
Il programma quando lo lancio funziona , il problema e che se lo lancio 11-12 volte di fila mi si blocca.
Cosa può essere?
Può essere di tutto, un'ipotesi è che il programma vada in dead-lock per una reciprocità nell'uso della condizione. Puoi verificare se si tratti di un dead-lock usando il profiler integrato nel jdk (jvisualvm).
Gin&&Tonic
06-04-2011, 13:44
Puoi verificare se si tratti di un dead-lock usando il profiler integrato nel jdk (jvisualvm).
:eek: :eek: Se il problema è dovuto ad un dead-lock , posso fare qualcosa per eliminarlo?
:muro: :muro: Come faccio ad utilizzare il profiler?
un dead-lock è semplicemente dovuto ad un thread che si mette in attesa per una condizione che si verifica quando un altro thread fa qualcosa e quel qualcosa dipende da un'azione che il primo thread potrà compiere solo dopo essersi risvegliato.
E' un grande classico della malavita, io libero l'ostaggio se tu mi dai i soldi, io ti do i soldi se tu mi dai l'ostaggio: uno dei due deve fare un passo indietro o finisce male.
Si verifica per un intoppo logico, a volte basta una coda per risovere.
Per usare jvisualvm, lanci il tuo programma, apri una console dei comandi, digiti "jvisualvm" e premi invio. Si apre una finestra, a sinistra vedi gli identificatori dei programmi java in esecuzione, doppio click sul tuo, selezioni la scheda threads e già dalle linee colorate dovresti capire se i tuoi thread sono bloccati.
Se premi thread-dump vedrai su quale "monitor" i thread in attesa sono bloccati.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.