2011-07-12 8 views

Respuesta

11

Tiene 2 formas de hacerlo. Ambos son bastante simple:

  • manera antigua: obtener el grupo de hilos de raíz puede acceder Thread.currentThread().getGroup() ..getParent() en bucle. y llame al enumerate(Thread[])

  • más nuevo (aunque más lento). for (Thread t : Thread.getAllStackTraces().keySet()) if (t.getId()==id)...

El primer método tiene un pequeño problema de que, debido a un error en ThreadGroup.destroy(), un ThreadGroup no puede enumerar nada en absoluto.

El segundo es más lento y tiene una falla de seguridad.

-1

Usted puede utilizar el código siguiente con el fin de obtener el nombre del hilo (Por ejemplo, quiero obtener los nombres de hilos que se encuentran en punto muerto)

ThreadMXBean threadMB = ManagementFactory.getThreadMXBean(); 
long threadIds[] = threadMB.findDeadlockedThreads(); 
for (long id : threadIds) { 
    System.out.println("The deadLock Thread id is : " + id 
          + " > " 
          +  
    threadMB.getThreadInfo(id).getThreadName()); 
} 
Cuestiones relacionadas