package javacodebook.thread.threadlist; /** * Listet die in einer Anwendung laufenden Threads gruppiert nach ihrer * Thread-Gruppe auf. */ public class ListThreads { private final static String TAB= " "; /** * Listet die Threads einer ThreadGroup sowie Thread untergeordneter * ThreadGroups auf. Die Threads werden nach ihrer ThreadGroup gruppiert */ public synchronized void listThreads(ThreadGroup group) { listThreads(group, 1); } /** * Listet alle Threads einer Anwendung auf. */ public synchronized void listThreads() { // Es sollen Alle Threads und Thread-Gruppen aufgelistet werden. // Dazu wird zunächst einmal die Root-Threadgruppe ausfindig gemacht ThreadGroup root = Thread.currentThread().getThreadGroup().getParent(); while (root.getParent() != null) root = root.getParent(); listThreads(root, 1); } /** * Listet die Threads einer ThreadGroup sowie Thread untergeordneter * ThreadGroups auf. Die Threads werden nach ihrer ThreadGroup gruppiert */ private void listThreads(ThreadGroup group, int level) { System.out.print(TAB.substring(0, level*3)); System.out.println("[" + group.getName() + "]"); int estimate, real; // Zuerst die Threads der Thread-Gruppe estimate = group.activeCount(); Thread []threads = new Thread[estimate*2]; real = group.enumerate(threads, false); for (int i=0; i " + threads[i].getName()); System.out.println(", " + threads[i].getPriority()); } // Und jetzt die Untergruppen. estimate = group.activeGroupCount(); ThreadGroup []groups = new ThreadGroup[estimate*2]; real = group.enumerate(groups, false); for (int i=0; i