¿Cómo detener un hilo en Java?

Detención de un hilo en Java : Aquí, vamos a aprender cómo detener un hilo en el lenguaje de programación Java con ejemplos?

Detención de un hilo

  • Como sabemos que no hay formas directas o de acceso directo a la parada de hilo en Java.
  • Como sabemos hilo en Java se detiene cuando la ejecución del método run () ha completado con normalidad o el hilo se detiene si se produce una excepción en el ínterin de finalización de rosca.
  • En las versiones anteriores de Java JDK existe un método de class hilo llamado “parada”, pero este método está en desuso en las versiones posteriores de modo que no es compatible en versiones posteriores de Java.
  • Java no proporciona algunos métodos directos a rosca parada en Java, pero hay algunos métodos de control definidos en Java JDK versiones anteriores y los nombres de método se presentan a continuación:

    1. stop ()
    2. suspender ( )
    3. resume ()

  • Todos los métodos dados anteriormente están en desuso por lo que no admite en versiones posteriores de Java.
  • Veremos cómo detener un hilo implícitamente JDK de Java deja un hilo implícitamente, si y sólo si, ya sea una carrera de rosca () de la completa ejecución normalmente o si un hilo produce una excepción en el ínterin.
  • Ahora, vamos a ver cómo detener un hilo manualmente: podemos detener un hilo manual de dos maneras:

    1. Con la ayuda de la variable class volatile
    2. Con la ayuda de interrupción () método

Ahora vamos a elaborar en cada sentido, uno por uno es la siguiente …

Con la ayuda de la variable boolean volatile

  • en el primer paso, vamos a declarar una boolean variable de volatile en un hilo.
  • En el segundo paso en un principio, se le asignará el valor de la variable boolean volatile como verdadero.
  • En el tercer paso, definiremos un trabajo interior mientras bucle y pasando parámetro de la variable boolean volatile en bucle while y que mantendrán bucle método run () en el interior. Mediante el uso de bucle del hilo boolean funcionando hasta que la variable continue volatile se convierte en falsa.
  • En el cuarto paso, vamos a definir otro método denominado “stopThread ()” dentro de un hilo y en este método, vamos a establecer la variable boolean volatile se establece en false para detener el hilo.
  • En el quinto o boolean paso, no necesitamos hacer nada para detener manualmente el hilo. Para detener un hilo podemos simplemente llamar al método definido por el usuario stopThread () para detener el hilo.

Ejemplo:

// Java program to stop a thread with the help of 
// volatile boolean variable
class ChildThread extends Thread {
// intially assign boolean variable with value as true
volatile boolean thread_stop = true;
// this method is defined to stop a thread
public void stopThread() {
thread_stop = false;
}
// this loop will continue until boolean variable become false
public void run() {
while (thread_stop) {
System.out.println("Child Thread Started");
}
System.out.println("Child Thread Ended");
}
}
class Main {
public static void main(String[] args) {
ChildThread ct = new ChildThread();
ct.start();
try {
Thread.sleep(100);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
// this method will be called to stop a thread
ct.stopThread();
}
}

salida

Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
.
.
.
.
.
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Ended

Con la ayuda de interrupción () método

Utilizaremos método readymade de interrupción () para detener un hilo.

Cuando llamamos método de interrupción en un objeto de hilo y asignará el estado interrumpida de un hilo y este estado puede ser generado por el método interrumpido ().

Ejemplo:

// Java program to stop a thread by using interrupt() method
class ChildThread extends Thread {
// this loop will continue until boolean variable become false
public void run() {
while (!Thread.interrupted()) {
System.out.println("Child Thread Started");
}
System.out.println("Child Thread Ended");
}
}
class Main {
public static void main(String[] args) {
ChildThread ct = new ChildThread();
ct.start();
try {
Thread.sleep(100);
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
// this method will be called to interrupt a thread
ct.interrupt();
}
}

salida

Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
.
.
.
.
.
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Started
Child Thread Ended


Deja un comentario

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