creare il quadro di una classe di un'applicazione Java denominata "Trova ". Basta fornire un metodo vuoto main () come punto di partenza .
Public class Trova {
void main ( args String [ ] ) { public static
}
}
2
Creare un oggetto Runnable e discussione in modo da avere qualcosa da trovare . Nome del filo " Sleeper " , fornendo un secondo parametro al costruttore Thread, dove il primo argomento è il riferimento Runnable . Dopo aver creato la discussione , avviarlo chiamando il metodo start ( ) . Il codice seguente inizia l'ormai vuota metodo main () Definizione :
corridore Runnable = new Runnable ( ) {
public void run ( ) { try {
Thread.sleep ( 50000 ) ;
} catch ( InterruptedException e) {
//ignora
}
}
} ;
Discussione t = new Thread ( corridore , " Sleeper ");
T.Inizio ();
3
trovare il filo con l'aiuto di ThreadGroup . Tutte le discussioni appartengono a un ThreadGroup . Questi gruppi di sedersi in un albero in cui tutti i gruppi hanno un nodo padre ( e nodi figli ) , fatta eccezione per la radice dell'albero , che non ha genitore . Supponendo che il filo di trovare non è in ThreadGroup del thread corrente , a piedi fino alla cima dell'albero , cercando in madre del gruppo . In questo modo, quando si va a trovare il filo " Sleeper " , saprete che avete trovato da tutte le discussioni attive saranno figli del thread padre signore .
CurrentThread Discussione Thread.currentThread = ( ) ;
gruppo ThreadGroup = currentThread.getThreadGroup ();
mentre ( group.getParent ( ) = null) {
gruppo
= group.getParent ( ) ; !
}
4
Utilizzare il metodo di ThreadGroup per raggruppare tutti i bambini le discussioni di questo genitore Super enumerate ( ) . Il metodo memorizza i thread attivi in un array
int activeCount = group.activeCount ( ) .
ActiveThreads discussione [ ] = new Thread [ activeCount 5 ] ;
int actualCount = group.enumerate ( activeThreads ) , - " . Sleeper "
5
utilizzare la matrice activeThreads per aiutare a trovare il filo manca qui , quello segnato Una volta trovato, utilizzare il dumpStack () per fornire una stacktrace del thread :
Discussione trovato = null;
for (int i = 0; i < actualCount ; i + + ) {
se ( " Sleeper " equals ( activeThreads [ i] getName () ) . . ) {
trovato = activeThreads [ i] ;
pausa ;
} }
if ( trovato = null ) {
found.dumpStack (); }
6
Come la linea di chiusura per il metodo main () , indicare al sistema per uscire dalla memoria :
System.exit ( 0 ) ;
7
compilare ed eseguire il programma . Mentre i numeri di riga nella traccia dello stack potrebbe essere leggermente diverso in base al le cose come stile di parentesi , tutti dovrebbero fornire lo stesso rendimento generale
java.lang.Exception : . Stack trace
in java . lang.Thread.dumpStack ( Thread.java : 1206 ) per
a Find.main ( Find.java : 31 ) economici
Programmazione © www.354353.com