Meine Aufgabe besteht also darin, alle Threadgruppen und alle Threads anzuzeigen, die zu diesen Gruppen gehören, die derzeit in der JVM ausgeführt werden.Anzeigen aller Threadgruppen und Threads, die derzeit in JVM ausgeführt werden
Dies sollte ausgegeben werden, so dass die Fadengruppe zuerst angezeigt wird und dann alle Laufflächen in dieser Gruppe darunter angezeigt werden. Dies geschieht für alle Thread-Gruppen. Derzeit wird mein Code nur alle Thread-Gruppen und dann jeden Thread anzeigen, aber ich bin mir nicht sicher, wie ich den Output erreichen kann, den ich beschrieben habe.
Hier ist meine aktuellen Code:
public ThreadGroup getThreadRoot() {
ThreadGroup rootGroup = Thread.currentThread().getThreadGroup();
ThreadGroup parentGroup;
while ((parentGroup = rootGroup.getParent()) != null) {
rootGroup = parentGroup;
}
return rootGroup;
}
public ThreadGroup[] getAllThreadGroups(){
ThreadGroup root= getThreadRoot();
int estimate = root.activeGroupCount();
ThreadGroup [] threads = new ThreadGroup[estimate];
while (root.enumerate(threads, true) == threads.length) {
threads = new ThreadGroup[ threads.length * 2 ];
}
ThreadGroup[] allGroups = new ThreadGroup[threads.length+1];
allGroups[0] = root;
System.arraycopy(threads, 0, allGroups, 1, estimate);
return allGroups;
}
public Thread[] getAllThreads(){
ThreadGroup root= getThreadRoot();
int estimate = root.activeGroupCount();
Thread [] allThreads = new Thread[estimate];
while (root.enumerate(allThreads, true) == allThreads.length) {
allThreads = new Thread[ allThreads.length * 2 ];
}
return allThreads;
}
und die wichtigste Methode:
public static void main(String[] args) {
CreateDummyGroups create = new CreateDummyGroups();
Functionality func = new Functionality();
ThreadGroup[] tg = func.getAllThreadGroups();
Thread[] t = func.getAllThreads();
for (int i=0; i<tg.length; i++) {
if(tg[i] != null){
System.out.println("Name: " + tg[i].getName());
}
}
for (int i=0; i<t.length; i++) {
if(t[i] != null){
System.out.println("Name: " + t[i].getName() + ", id: " + t[i].getId()
+ ", State: " + t[i].getState() + ", Is daemon? " + t[i].isDaemon());
}
}
}
}
Sie Ihre eigenen Beiträge nicht beschädige . Es ist eine gut geschriebene, anständig durchdachte, legitime Frage; Warum würden Sie seinen Inhalt löschen? Darüber hinaus behält Stack Exchange die volle Eigentümerschaft für alles, was Sie dort posten, so dass Sie Ihre eigenen Posts überhaupt nicht vandalisieren dürfen. – HyperNeutrino