Obtenez un identifiant pour le ThreadGroup racine, comme ceci :
ThreadGroup rootGroup = Thread.currentThread( ).getThreadGroup( );
ThreadGroup parentGroup;
while ( ( parentGroup = rootGroup.getParent() ) != null ) {
rootGroup = parentGroup;
}
Maintenant, appelez la fonction enumerate() sur le groupe Root de façon répétée. Le deuxième argument vous permet d'obtenir tous les fils, de manière récursive :
Thread[] threads = new Thread[ rootGroup.activeCount() ];
while ( rootGroup.enumerate( threads, true ) == threads.length ) {
threads = new Thread[ threads.length * 2 ];
}
Notez comment nous appelons enumerate() de manière répétée jusqu'à ce que le tableau soit assez grand pour contenir toutes les entrées.