"¡Hola, amigo! Veo que estás progresando mucho en el aprendizaje de los hilos".

"No fue tan difícil después de todo".

¡Genial! Hoy tiene una lección fácil y el tema es el método de unión .

Imagine la siguiente situación: el subproceso principal ha creado un subproceso secundario para realizar alguna tarea. Pasa el tiempo y ahora el subproceso principal necesita los resultados del trabajo realizado por el subproceso secundario. Pero el subproceso secundario aún no ha terminado su trabajo. ¿Qué debe hacer el hilo principal?

Buena pregunta. ¿Qué debe hacer el hilo principal?

"Para esto es el método join . Nos permite hacer que un hilo espere mientras otro hilo termina su trabajo:"

Código Descripción
class Printer implements Runnable
{
private String name;
public Printer(String name)
{
this.name = name;
}
public void run()
{
System.out.println("I’m " + this.name);
}
}
Clase que implementa la interfaz Runnable.
public static void main(String[] args)
{
Printer printer1 = new Printer("Nick");
Thread thread1 = new Thread(printer1);
thread1.start();

thread1.join();
}
El subproceso principal crea un subproceso secundario: subproceso1 .

Luego lo inicia llamando a thread1 .start();

Y luego espera a que se complete – thread1.join();

Un subproceso puede llamar al método de unión en el objeto Subproceso de un segundo subproceso. Como resultado, el primer subproceso (que llamó al método) detiene su trabajo hasta que finaliza el segundo subproceso (cuyo método de unión del objeto fue llamado).

Necesitamos distinguir entre dos cosas aquí: tenemos un subproceso (un entorno de ejecución separado) y tenemos un objeto Subproceso.

"¿Eso es todo?"

"Sí."

"Pero, ¿por qué tenemos que crear un hilo y luego esperar inmediatamente a que se complete?"

"Es posible que no necesite hacerlo de inmediato. Podría ser después de que haya pasado un tiempo. Después de iniciar su primer subproceso secundario, el subproceso principal puede asignar muchas más tareas a otros subprocesos (creándolos y llamando al método de inicio ). Luego, cuando no le queda trabajo, necesita procesar los resultados del primer subproceso secundario. Cada vez que necesite esperar a que otro subproceso termine de funcionar, debe llamar al método de unión ".

"Entiendo."