Sobes.tech
Middle

¿Cómo funciona el método Thread.join()?

sobes.tech AI

Respuesta de la IA

El método Thread.join() hace que el hilo en ejecución actual espere a que finalice el hilo en el que se llamó a join.

Al llamar a otherThread.join(), el hilo actual (por ejemplo, el hilo main) se bloquea hasta que otherThread termine su ejecución (su método run() devuelve el control).

Se puede especificar un tiempo de espera en milisegundos o en milisegundos y nanosegundos:

  • otherThread.join(long millis): espera un máximo de millis milisegundos.
  • otherThread.join(long millis, int nanos): espera un máximo de millis milisegundos y nanos nanosegundos.

Si se expira el tiempo de espera especificado y el hilo aún no ha terminado, el hilo actual se desbloquea y continúa con la ejecución.

Thread.join() puede lanzar InterruptedException si el hilo actual es interrumpido durante la espera. En ese caso, la espera termina.

Ejemplo:

// Crear y lanzar un nuevo hilo
Thread worker = new Thread(() -> {
    try {
        // Simulación de trabajo
        Thread.sleep(2000);
        System.out.println("Hilo worker finalizado.");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
});

worker.start();

try {
    // El hilo principal espera a que termine el hilo worker
    worker.join();
    System.out.println("El hilo principal continúa después de que el worker terminó.");
} catch (InterruptedException e) {
    e.printStackTrace();
}

Importante: join() sincroniza la ejecución de un hilo con la finalización de otro. Esto es útil cuando necesitas garantizar que una tarea específica se complete antes de continuar la ejecución en otro hilo.