1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
fun main() { val thread = Thread { // Código a ejecutar en el hilo println("Inicio del hilo") for (i in 1..5) { println("Hilo en ejecución: $i") Thread.sleep(1000) // Pausa de 1 segundo } println("Fin del hilo") } thread.start() // Iniciar el hilo thread.join() // Bloquear la ejecución del hilo, hasta que no se acabe no se ejecuta el hilo principal // Código en el hilo principal for (i in 1..3) { println("Hilo principal en ejecución: $i") Thread.sleep(1000) // Pausa de 1 segundo } thread.join() // Esperar a que el hilo termine su ejecución println("Fin del programa") } |
El método join()
es utilizado para esperar a que un hilo termine su ejecución antes de continuar con el resto del programa. Cuando se llama al método join()
en un hilo, el hilo actual se bloquea y espera hasta que el hilo en el que se invoca termine su ejecución.
En el código proporcionado, después de iniciar el hilo con thread.start()
, se llama al método thread.join()
dos veces. La primera llamada espera a que el hilo finalice su ejecución antes de continuar con el código en el hilo principal. La segunda llamada, aunque redundante en este caso, también espera a que el hilo termine nuevamente.
El propósito del join()
en este ejemplo es asegurarse de que el hilo creado finalice su ejecución antes de que el programa principal finalice. Esto evita que el programa termine prematuramente y garantiza que todos los hilos hayan completado su trabajo antes de que el programa finalice y se imprima «Fin del programa».