versión de Java Runtime Environment SE 6 o superior
Mostrar más instrucciones
1
Crear el marco para una clase de aplicaciones Java llamado "Find ". Simplemente proporcione un método main () vacío como punto de partida .
Public class
Encuentre {
públicos void ( String args [ ] ) { static
}
}
2
Crear un objeto Runnable e hilo para que tenga algo de encontrar. Nombre del hilo " Sleeper " , proporcionando un segundo argumento al constructor Thread, donde el primer argumento es la referencia Runnable . Después de crear el tema , empezar llamando a su método start () . El código siguiente comienza la definición del método principal ha quedado vacío () :
corredor Runnable = new Runnable () { try
pública void run () { {
Thread.sleep ( 50000) ;
} catch ( InterruptedException e) {
//ignore
} }
} ;
Thread t = new Thread ( corredor, "Sleeper ");
t.Start ();
3
Encontrar el hilo con la ayuda de ThreadGroup . Todos los temas pertenecen a un ThreadGroup . Estos grupos de sentarse en un árbol en el que todos los grupos tienen un nodo padre ( y nodos hijos ) , a excepción de la raíz del árbol , que no tiene padre . Suponiendo que el hilo de encontrar no está en ThreadGroup del subproceso actual , subir a la cima del árbol mirando a la matriz del grupo . De esta manera, cuando usted va a encontrar el hilo "Sleeper " , usted sabrá que usted lo ha encontrado ya todas las discusiones activas serán los niños de la rosca padre supremo .
Tema currentThread Thread.currentThread = ( ) ;
grupo ThreadGroup = currentThread.getThreadGroup ();
while ( group.getParent () = null ) {
grupo
= group.getParent (); !
}
4
Utilice el método de ThreadGroup agrupar todos los hilos de los niños de esta super padre enumerate (). El método almacena los hilos activos en una matriz
int activeCount = group.activeCount ( ) .
ActiveThreads Tema [ ] = new Thread [ activeCount 5 ] ;
int ActualCount = group.enumerate ( activeThreads ) , - " . Sleeper "
5
Utilice la matriz activeThreads para ayudar a encontrar el hilo que falta aquí , el que marcó Una vez encontrado, use el DumpStack () para proporcionar un stacktrace de la rosca :
Tema encontrado = null;
for (int i = 0 ; i < ActualCount , i + +) {
if ( "Sleeper " es igual a ( activeThreads [ i ] getName ()) . ). {
encontró activeThreads = [ i];
break;
< p >} }
if ( encontrado = null ) {
found.dumpStack (); }
6 < p> En la línea de cierre a su método main (), dice que el sistema para salir fuera de la memoria :
System.exit ( 0 ) ;
7
compilar y ejecutar el programa . Mientras que los números de línea en el seguimiento de la pila podría ser levemente diferente basado en cosas como paréntesis, estilo, todos ellos deben proporcionar el mismo rendimiento en general
java.lang.Exception : . Seguimiento de la pila
en java . lang.Thread.dumpStack ( Thread.java : 1206 )
en Find.main ( Find.java : 31 )