Vous avez 2 façons de le faire.
Les deux sont assez simples:
À l'ancienne: obtenir la racine d'un groupe de thread, vous pouvez accéder à Thread.currentThread().getGroup()..getParent() dans la boucle. et appel enumerate(Thread[])
plus récents (plus lent). for (Thread t : Thread.getAllStackTraces().keySet()) if (t.getId()==id)...
La première méthode a un petit problème dû à un bogue dans ThreadGroup.destroy(), un ThreadGroup peut ne pas énumérer tout ce à tous.
La seconde est plus lent et a une faille de sécurité, cependant.
Vous pouvez utiliser le code suivant pour obtenir le Nom du Thread (Pour, par exemple, je veux obtenir les noms des Fils qui sont dans l'impasse )
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());}
Vous avez 2 façons de le faire.
Les deux sont assez simples:
À l'ancienne: obtenir la racine d'un groupe de thread, vous pouvez accéder à
Thread.currentThread().getGroup()
..getParent() dans la boucle. et appelenumerate(Thread[])
plus récents (plus lent).
for (Thread t : Thread.getAllStackTraces().keySet()) if (t.getId()==id)...
La première méthode a un petit problème dû à un bogue dans
ThreadGroup.destroy()
, un ThreadGroup peut ne pas énumérer tout ce à tous.La seconde est plus lent et a une faille de sécurité, cependant.
OriginalL'auteur
Vous pouvez utiliser le code suivant pour obtenir le Nom du Thread (Pour, par exemple, je veux obtenir les noms des Fils qui sont dans l'impasse )
OriginalL'auteur Muhammed Shakir Misarwala