¿Cómo mostrar todos los subprocesos en ejecución en Java?

Un subproceso es básicamente un flujo de instrucciones ejecutado secuencialmente. Se utiliza para implementar la multitarea en un programa. Un programa puede tener varios hilos. Los hilos se utilizan para hacer varias cosas al mismo tiempo. Los subprocesos se utilizan básicamente para realizar tareas complicadas en segundo plano sin afectar al programa principal.

Hay dos métodos para mostrar todos los subprocesos en ejecución en Java

1. Usando el objeto ThreadGroup

Java nos proporciona una forma de agrupar múltiples hilos en un solo objeto. En Java, la clase ThreadGroup implementa un grupo de subprocesos, es decir, grupos de subprocesos, por lo que aquí usaremos un objeto ThreadGroup para agrupar todos los subprocesos que se están ejecutando actualmente. Después de esto, usaremos el método activeCount() de ThreadGroup para obtener el número de subprocesos activos, luego usaremos el método enumerate(Thread[] list) de ThreadGroup que copiará los subprocesos actualmente activos en una array, y recorreremos la array para obtener los nombres de todos los subprocesos activos.

Java

// Java Program to display all the running threads using
// ThreadGroup object
 
import java.io.*;
 
class GFGThread extends Thread {
    // overridden run method
    public void run()
    {
        System.out.println("Overridden 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 thread
        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. Usar el método getAllStackTrace()

El método getAllStackTrace() proporciona un seguimiento de pila de todos los subprocesos en ejecución. Luego creamos un conjunto de claves de ese elemento porque el método devuelve un mapa, y luego recorremos todos los elementos del conjunto para imprimir todos los subprocesos en ejecución.

Java

// Java Program to display all the running threads using
// getAllStackTraces() Method
import java.io.*;
import java.lang.*;
import java.util.*;
 
class GFGThread extends Thread {
   
    // overridden run method
    public void run()
    {
        System.out.println("Overridden 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 thread
        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());
        }
    }
}

 Producción

Overridden Run Method
Overridden Run Method
Thread-0
Reference Handler
Thread-1
Signal Dispatcher
main
Finalizer

Publicación traducida automáticamente

Artículo escrito por muazzamfaraaz y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *