1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.util.concurrent.Executors import java.util.concurrent.TimeUnit fun main() { val executor = Executors.newSingleThreadScheduledExecutor() val task = Runnable { // Aquí puedes poner la lógica que deseas ejecutar println("¡Hola desde el hilo programado!") } // Programar la tarea para que se ejecute después de un retraso inicial de 2 segundos executor.schedule(task, 6, TimeUnit.SECONDS) // Apagar el ejecutor executor.shutdown() } |
La clase Executors
en Java (y en este caso también en Kotlin) proporciona métodos estáticos para crear y administrar ejecutores de subprocesos. Los ejecutores de subprocesos son útiles cuando se necesita realizar tareas de forma asíncrona, en paralelo o en segundo plano.
Aquí hay algunas funcionalidades principales de la clase Executors
:
- Creación de ejecutores:
Executors
proporciona métodos estáticos para crear diferentes tipos de ejecutores, como ejecutores de subprocesos de un solo hilo (newSingleThreadExecutor()
), ejecutores de subprocesos con un pool fijo (newFixedThreadPool(int nThreads)
), ejecutores de subprocesos con pool variable (newCachedThreadPool()
) y más. - Gestión de tareas concurrentes: Los ejecutores de subprocesos administran la ejecución concurrente de tareas. Permiten enviar tareas para su ejecución y se encargan de asignarlas a los subprocesos disponibles en el pool. Esto ayuda a aprovechar eficientemente los recursos del sistema y a ejecutar tareas en paralelo.
- Control de concurrencia: Los ejecutores proporcionan un mecanismo para controlar y limitar la concurrencia de las tareas. Por ejemplo, un ejecutor de subprocesos con pool fijo permite especificar el número máximo de subprocesos disponibles, lo que puede ser útil para limitar la carga del sistema o administrar los recursos.
- Programación asíncrona: Los ejecutores de subprocesos son útiles en situaciones donde se necesitan realizar operaciones largas o bloqueantes en segundo plano, evitando que el hilo principal del programa se bloquee. Permiten ejecutar tareas en paralelo y asíncronamente, lo que puede mejorar la capacidad de respuesta y la eficiencia de las aplicaciones.