Récupération d'une liste complète des threads en cours d'exécution en Java
Connaître les threads qui s'exécutent dans une JVM est crucial à des fins de débogage et de profilage des performances. Cet article explique comment obtenir une liste de tous les threads actuellement exécutés dans la JVM, y compris ceux non initiés par la classe actuelle.
Obtention d'un ensemble de threads itérables
Pour acquérir un ensemble itérable de threads, exploitez la méthode Thread.getAllStackTraces(). Sa méthode .keySet() fournit un ensemble de threads en cours d'exécution. L'extrait de code ci-dessous le démontre :
Set<Thread> threadSet = Thread.getAllStackTraces().keySet();
Cette opération rassemble efficacement tous les threads exécutés dans la JVM, quelle que soit leur source.
Remarque : Les performances de cette La méthode pour 12 threads sur Azul JVM 16.0.1 fonctionnant sous Windows 10 avec un processeur Ryzen 5600X est d'environ 0 ms.
Contexte supplémentaire pour l'inspection des fils de discussion
Si vous avez besoin d'informations supplémentaires sur chaque fil de discussion, telles que son nom, son statut ou la classe associée, vous pouvez parcourir le thread set et récupérez ces détails explicitement. Par exemple :
for (Thread thread : threadSet) { System.out.println(thread.getName() + " - " + thread.getState()); System.out.println("\t" + thread.getClass()); }
En utilisant cette approche, vous pouvez obtenir une compréhension granulaire des threads s'exécutant au sein de la JVM, vous permettant de résoudre efficacement les problèmes, d'optimiser les performances et de gérer la concurrence.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!