“Conocimientos Programación>Programación Java

Cómo encontrar un Thread Java en tiempo de ejecución

2011/8/13
El arte de encontrar hilos en tiempo de ejecución incluye dos clases de Java , hilo y ThreadGroup . Además , hay que recordar el nombre de su hilo cuando se crea. De lo contrario , si usted no nombra a su hilo, usted está confiando en el mecanismo de nomenclatura predeterminado para temas incorporados en Java, y mientras que usted puede ser capaz de adivinar lo que el nombre del subproceso debe ser, no hay garantía de que va a ser el mismo nombre en todas las plataformas de tiempo de ejecución y las versiones de Java. Cosas que necesitará
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 )

Programación Java
Cómo utilizar JavaMail para enviar un correo electrónico HTML
Cómo ejecutar códigos Java Con ColdFusion
Cómo contar los elementos de una lista en Java
Cómo capturar pulsaciones de teclas en Java
Cómo especificar Hidden URL de entrada con JSF
Cómo utilizar Java 2D para pintar sobre una imagen
Cómo utilizar un Google App Engine en Eclipse
¿Qué es Struts Programas
Conocimientos Informáticos © http://www.ordenador.online