Wie zeigt man alle laufenden Threads in Java an?
Ein Thread ist im Grunde ein sequenziell ausgeführter Befehlsstrom. Es wird verwendet, um Multitasking in einem Programm zu implementieren. Ein Programm kann mehrere Threads haben. Threads werden verwendet, um mehrere Dinge gleichzeitig zu tun. Threads werden grundsätzlich verwendet, um komplizierte Aufgaben im Hintergrund auszuführen, ohne das Hauptprogramm zu beeinträchtigen.
Es gibt zwei Methoden, um alle laufenden Threads in Java anzuzeigen
1. Verwenden des ThreadGroup-Objekts
Java bietet uns eine Möglichkeit, mehrere Threads in einem einzigen Objekt zu gruppieren. In Java wird eine Gruppe von Threads, dh Thread-Gruppen, durch die ThreadGroup-Klasse implementiert, daher verwenden wir hier ein ThreadGroup-Objekt, um alle derzeit laufenden Threads zu gruppieren. Danach verwenden wir die Methode activeCount() von ThreadGroup, um die Anzahl der aktiven Threads abzurufen, dann verwenden wir die Methode enumerate(Thread[] list) von ThreadGroup, die die derzeit aktiven Threads in ein Array kopiert, und Wir werden das Array durchlaufen, um die Namen aller aktiven Threads zu erhalten.
Java
// Java Program to display all the runnning threads using // ThreadGroup object import java.io.*; class GFGThread extends Thread { // overriden run method public void run() { System.out.println("Overriden Run Method"); } } public class GFG { public static void main(String[] args) { // making a thread object GFGThread t1 = new GFGThread(); GFGThread t2 = new GFGThread(); t1.start(); // starting the tread t2.start(); // getting the group of the threads/ ThreadGroup threadGroup = Thread.currentThread().getThreadGroup(); // getting the total active count of the threads int threadCount = threadGroup.activeCount(); Thread threadList[] = new Thread[threadCount]; // enumerating over the thread list threadGroup.enumerate(threadList); System.out.println("Active threads are:"); // iterating over the for loop to get the names of // all the active threads. for (int i = 0; i < threadCount; i++) System.out.println(threadList[i].getName()); } }
2. Verwendung der Methode getAllStackTrace()
Die Methode getAllStackTrace() liefert einen Stack-Trace aller laufenden Threads. Dann erstellen wir einen Satz der Schlüssel dieses Elements, da die Methode eine Zuordnung zurückgibt, und dann durchlaufen wir alle Elemente des Satzes, um alle laufenden Threads auszugeben.
Java
// Java Program to display all the runnning threads using // getAllStackTraces() Method import java.io.*; import java.lang.*; import java.util.*; class GFGThread extends Thread { // overriden run method public void run() { System.out.println("Overriden Run Method"); } } public class GFG { public static void main(String[] args) { // making a thread object GFGThread t1 = new GFGThread(); GFGThread t2 = new GFGThread(); t1.start(); // starting the tread t2.start(); // getAllStackTraces() method will return the Set of // Thread Objects Set<Thread> threadSet = Thread.getAllStackTraces().keySet(); // iterating over the threads to get the names of // all the active threads for (Thread x : threadSet) { System.out.println(x.getName()); } } }
Ausgabe
Overriden Run Method Overriden Run Method Thread-0 Reference Handler Thread-1 Signal Dispatcher main Finalizer