¿Cómo suspender temporalmente un hilo en Java?

Los subprocesos en Java son los subprocesos ligeros que puede crear el usuario. Se utiliza para realizar tareas complicadas en segundo plano sin perturbar el programa principal. Para suspender el subproceso temporalmente haciéndolo pasar del estado de ejecución al estado de espera. El concepto utilizado para lograr el objetivo es la función suspender() .

Método: Cómo se pueden suspender los hilos temporalmente

  • Creando ‘ MyThread Class que está extendiendo la java.lang.Thread class . Tiene una función run() que contiene código para realizar.
  • En la función principal, se crea un objeto ‘ MyThread Class ‘thread’ que se nombra como ‘GFG’ usando la función setName() .
  • Inicie el subproceso para realizar sus tareas llamando a la función start() y comienza a ejecutar el código escrito en la función run().

A veces hay una urgencia de suspender estos hilos por alguna razón. Así que aquí el programa muestra cómo el hilo se suspende temporalmente usando la función suspender() . El subproceso pasará del estado de ejecución al estado de espera . Esta función hace que un hilo deje de ejecutarse temporalmente. El hilo quedará en espera del estado hasta que lo reanudemos. Entonces, en este programa, el hilo se mantiene suspendido hasta que finaliza el tiempo de suspensión, es decir, 5 segundos (tomados en este programa), y luego lo reanudamos usando la función resume().

Sintaxis: para obtener el número de identificación del hilo actual ya está creado

Thread.currentThread( ).getId( ) ;

Métodos utilizados:  

  1. start() : Este es un método para iniciar el funcionamiento de un hilo.
  2. setName() : Este es un método utilizado para establecer el nombre de un hilo que se crea.
  3. dormir (tiempo) : este es un método utilizado para dormir el hilo durante algunos milisegundos.
  4. suspender() : Este es un método utilizado para suspender el hilo. El subproceso permanecerá suspendido y no realizará sus tareas hasta que se reanude.
  5. resume() : este es un método utilizado para reanudar el hilo suspendido.

Ejemplo:

Java

// Java program to suspend a thread temporarily
 
// Importing all classes from
// java.util package
import java.util.*;
 
// Class- MyThread
class MyThread extends Thread {
 
    // Remember : Method can be executed multiple times
    public void run()
    {
 
        // Try block to check if any exception occurs
        try {
 
            // Print and display the running thread
            // using currentThread() method
            System.out.println(
                "Thread " + Thread.currentThread().getId()
                + " is running");
        }
 
        // Catch block to handle the exceptions
        catch (Exception e) {
 
            // Message to be printed if
            // the exception is encountered
            System.out.println("Exception is caught");
        }
    }
}
 
// Class-Main
public class GFG {
 
    // Main Driver Method
    public static void main(String[] args) throws Exception
    {
 
        // Creating a thread
        MyThread thread = new MyThread();
 
        // Naming thread as "GFG"
        thread.setName("GFG");
 
        // Start the functioning of a thread
        thread.start();
 
        // Sleeping thread for specific amount of time
        Thread.sleep(500);
 
        // Thread GFG suspended temporarily
        thread.suspend();
 
        // Display message
        System.out.println(
            "Thread going to sleep for 5 seconds");
 
        // Sleeping thread for specific amount of time
        Thread.sleep(5000);
 
        // Display message
        System.out.println("Thread Resumed");
 
        // Thread GFG resumed
        thread.resume();
    }
}

Producción : 

Thread 13 is running
Thread Suspended
Thread going to sleep for 5 seconds
Thread Resumed

Publicación traducida automáticamente

Artículo escrito por yashgupta2808 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 *