1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import java.util.concurrent.CountDownLatch fun main() { val latch = CountDownLatch(3) // Inicializamos el latch con el número de hilos que deben completarse // Definimos una función que representa la tarea que realizarán los hilos fun realizarTarea(id: Int) { println("Hilo $id realizando tarea") Thread.sleep((Math.random() * 1000).toLong()) // Simulamos una tarea que toma un tiempo variable println("Hilo $id ha completado la tarea") latch.countDown() // Indicamos que este hilo ha completado su tarea } // Creamos tres hilos que realizarán la tarea val hilo1 = Thread { realizarTarea(1) } val hilo2 = Thread { realizarTarea(2) } val hilo3 = Thread { realizarTarea(3) } // Iniciamos los hilos hilo1.start() hilo2.start() hilo3.start() // Esperamos a que todos los hilos completen sus tareas latch.await() // Una vez que todos los hilos han completado, continuamos con el hilo principal println("Todos los hilos han completado sus tareas. Continuando con el hilo principal.") } |