public class MainClass { public static void main(String[] args) { ThreadGroup group = Thread.currentThread().getThreadGroup(); ThreadGroup topGroup = group; // 遍歷線程組樹,獲取根線程組 while (group != null) { topGroup = group; group = group.getParent(); } // 激活的線程數再加一倍,防止枚舉時有可能剛好有動態線程生成 int slackSize = topGroup.activeCount() * 2; Thread[] slackThreads = new Thread[slackSize]; // 獲取根線程組下的所有線程,返回的actualSize便是最終的線程數 int actualSize = topGroup.enumerate(slackThreads); Thread[] atualThreads = new Thread[actualSize]; // 復制slackThreads中有效的值到atualThreads System.arraycopy(slackThreads, 0, atualThreads, 0, actualSize); System.out.println("Threads size is " + atualThreads.length); for (Thread thread : atualThreads) { System.out.println("Thread name : " + thread.getName()); } } }