1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import kotlin.concurrent.thread fun main() { val numberOfInstances = 5 for (i in 1..numberOfInstances) { thread(start = true) { try { val processBuilder = ProcessBuilder("notepad.exe") val process = processBuilder.start() process.waitFor() println("Notepad $i se ha cerrado.") } catch (e: Exception) { e.printStackTrace() } } } // Esperar a que todos los hilos terminen Thread.sleep(5000) // Espera 5 segundos para que todos los procesos se ejecuten println("Todas las instancias de Notepad han sido abiertas y cerradas.") } |
La línea de código thread(start = true)
inicia el hilo en paralelo. El argumento start = true
indica que el hilo debe comenzar inmediatamente después de su creación. Esto significa que se crean y arrancan todos los hilos casi simultáneamente en un bucle, no uno a la vez.
En el código se crea y arranca un hilo para cada iteración del bucle for
que recorre de 1 a numberOfInstances
, que es igual a 5 en este caso. Por lo tanto, se inician los 5 hilos al mismo tiempo, y cada hilo ejecutará su propio proceso de Notepad en paralelo.