public class ListAllRunningThread { /** * 列出所有线程的信息 */ public static void list(){ //获取当前线程所属线程组的父线程组 ThreadGroup root = Thread.currentThread().getThreadGroup().getParent(); //不断循环,直到找到根线程组 while (root.getParent() != null) { root = root.getParent(); } //访问根线程组下的线程 visit(root, 0); } /** * 递归的显示线程组中的线程 * @param group * @param level */ private static void visit(ThreadGroup group, int level) { // 获取group线程组中活动线程的估计数 int numThreads = group.activeCount(); Thread[] threads = new Thread[numThreads]; // 把此线程组中的所有活动线程复制到指定数组中。 // false表示不包括作为此线程组的子组的线程组中的线程。 numThreads = group.enumerate(threads, false); // 遍历活动线程数组,打印它们的名字 for (int i=0; i