Iniciar un nuevo hilo en Java

Mohammad Irfan 12 octubre 2023
  1. Cree un hilo ampliando la clase Thread en Java
  2. Cree un hilo implementando la interfaz Runnable en Java
  3. Crear hilo por el objeto Thread en Java
  4. Crear hilo usando la clase anónima en Java
  5. Crear hilo usando la función lambda en Java
  6. Crear hilo usando la clase Executors en Java
Iniciar un nuevo hilo en Java

Este tutorial presenta cómo iniciar un nuevo hilo en Java.

Un hilo es la unidad más pequeña de un programa / proceso que se ejecuta en tiempo real y maximiza la utilización de la CPU.

Java admite el concepto de subprocesos y permite crear un subproceso para crear aplicaciones de subprocesos múltiples. En este artículo, aprenderemos a crear un nuevo hilo en Java.

Para crear un nuevo hilo en Java, podemos usar la clase Thread o la interfaz Runnable. Veamos algunos ejemplos.

Cree un hilo ampliando la clase Thread en Java

En Java, Thread es una clase que se utiliza para crear un nuevo hilo y proporciona varios métodos de utilidad. En este ejemplo, usamos la clase Thread extendiéndola y luego comenzando usando el método start(). El método start() inicia un nuevo hilo. El método run() se utiliza para realizar la tarea mediante el hilo recién creado. El hilo ejecuta automáticamente este método. Vea el ejemplo a continuación.

public class SimpleTesting extends Thread {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    st.start();
  }
  public void run() {
    try {
      System.out.println("New Thread Start");
      Thread.sleep(1000);
      System.out.println("Thread sleep for 1 second.");
    } catch (InterruptedException e) {
      System.out.println(e);
    }
  }
}

Producción :

New Thread Start
Thread sleep for 1 second.

Cree un hilo implementando la interfaz Runnable en Java

La interfaz Runnable se puede utilizar para crear un nuevo hilo, pero no proporciona las características que proporciona la clase Thread. Esta interfaz proporciona un método run() que se puede utilizar para realizar tareas. Vea el ejemplo a continuación.

public class SimpleTesting implements Runnable {
  public static void main(String[] args) {
    SimpleTesting st = new SimpleTesting();
    Thread one = new Thread(st);
    one.start();
  }
  public void run() {
    try {
      System.out.println("New Thread Start");
      Thread.sleep(1000);
      System.out.println("Thread sleep for 1 second.");
    } catch (InterruptedException e) {
      System.out.println(e);
    }
  }
}

Producción :

New Thread Start
Thread sleep for 1 second.

Crear hilo por el objeto Thread en Java

Podemos crear directamente un nuevo hilo usando el objeto Thread y el método start(), pero este hilo no realiza ninguna tarea ya que no proporcionamos la implementación del método run(). Podemos obtener información del hilo usando sus métodos incorporados como getState(), getName(), etc. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    Thread one = new Thread("New Thread");
    System.out.println("Thread state : " + one.getState());
    one.start();
    System.out.println("Thread state : " + one.getState());
    System.out.println("Thread Name : " + one.getName());
    System.out.println("Thread state : " + one.getState());
  }
}

Producción :

Thread state : NEW
Thread state : RUNNABLE
Thread Name : New Thread
Thread state : TERMINATED

Crear hilo usando la clase anónima en Java

Esta no es una nueva forma de crear un nuevo hilo; simplemente usamos una clase anónima usando la clase Runnable, la pasamos al constructor Thread y comenzamos el hilo. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) {
    Thread t1 = new Thread(new Runnable() {
      public void run() {
        try {
          System.out.println("New Thread Start");
          Thread.sleep(1000);
          System.out.println("Thread sleep for 1 second.");
        } catch (InterruptedException e) {
          System.out.println(e);
        }
      }
    });
    t1.start();
  }
}

Producción :

New Thread Start
Thread sleep for 1 second.

Crear hilo usando la función lambda en Java

La función de función Lambda se agregó a la versión de Java 8 que se puede utilizar para sustituir la clase anónima en Java. Aquí, usamos la función lambda para crear un nuevo hilo. Esta es una forma compacta y corta de crear un hilo. Vea el ejemplo a continuación.

public class SimpleTesting {
  public static void main(String[] args) throws InterruptedException {
    new Thread(() -> {
      try {
        System.out.println("New Thread Start");
        Thread.sleep(1000);
        System.out.println("Thread sleep for 1 second.");
      } catch (InterruptedException e) {
        System.out.println(e);
      }
    }) {
      { start(); }
    }.join();
  }
}

Producción :

New Thread Start
Thread sleep for 1 second.

Crear hilo usando la clase Executors en Java

Los Executors es una clase que pertenece al paquete de concurrencia de Java y se puede utilizar para crear aplicaciones multiproceso. Entonces, también podemos usarlo para crear un nuevo hilo. El método newSingleThreadExecutor() inicializa un nuevo hilo y luego es ejecutado por la función submit(). Vea el ejemplo a continuación.

import java.util.concurrent.Executors;
public class SimpleTesting {
  public static void main(String[] args) throws InterruptedException {
    Executors.newSingleThreadExecutor().submit(() -> {
      try {
        System.out.println("New Thread Start");
        Thread.sleep(1000);
        System.out.println("Thread sleep for 1 second.");
      } catch (InterruptedException e) {
        System.out.println(e);
      }
    });
  }
}

Producción :

New Thread Start
Thread sleep for 1 second.

Artículo relacionado - Java Threading