Ciao a tutti!
Qualcuno mi sa dire se, di un'applicazione, è possibile ottenenere la lista dei thread attivi?
grazie!
Ciao a tutti!
Qualcuno mi sa dire se, di un'applicazione, è possibile ottenenere la lista dei thread attivi?
grazie!
Per avere la traccia di tutti gli stack in un qualunque punto della computazione, si può usare il metodo statico getAllStackTraces della classe Thread, che restituisce un Map<Thread, StackTraceElement[]>.
Grazie per la risposta, ma ti spiego il mio prob.
Per una pura casualità la mia applicazione ha sollevato un'eccezione relativa ad un file inesistente. In questo modo ho potuto notare che un thread continuava a fare il proprio lavoro quando invece doveve fermarsi tutto. La mia esigenza è quella di stoppare tutti i thread attivi in caso di errore.
Tieni presente che non ho molta familiarità con i thread
Grazie!!!
Tutti tutti? Anche l'esecuzione principale? Non so, puoi provareOriginariamente inviato da mikej
La mia esigenza è quella di stoppare tutti i thread attivi in caso di errore.
Dovrebbe morire tutta l'applicazione, ma non so se è ciò che vuoi.Codice PHP:System.exit(0);
Se no io proverei ad usare il metodo citato prima e su ciò che mi restituiscie dovrei invocare uno ad uno il metodo interrupt(), tranne però sul thread principale che non so da cosa lo si riconosce che lo è, forse ha l'ID=0, non so....
L'istruzione System.exit(0) mi farebbe uscire dall'applicazione principale....e chi lo spiega all'utente che deve riavviare l'applicazione? L'interrupt porebbe andare bene, ma se c'è un thread in wait? Non solleverebbe un'altra eccezione?(InterruptedException)
Grazie per la risposta
Qui devi valutare tu. Se c'è un thread in wait cosa deve succedere? Che muore pure quel thread?Originariamente inviato da mikej
L'interrupt porebbe andare bene, ma se c'è un thread in wait? Non solleverebbe un'altra eccezione?(InterruptedException)
Cmq sì, le Api java dicono che solleva quell'eccezione. Abbozzo una soluzione: gestisci la cattura dell'eccezione risvegliando i thread in wait e invoca su di essi la interrupt.
Non so come altro fare, guarda le API qui
http://java.sun.com/javase/6/docs/ap...ng/Thread.html
Ah perchè la mia soluzione era fattibile e valida? Sono andato ad intuito![]()