Clase/Herramienta | Descripción | Uso principal | Ejemplo de código |
---|
Executor | Interfaz que permite ejecutar tareas de forma asíncrona. | Ejecutar tareas en hilos sin gestionar manualmente los hilos. | kotlin val executor = Executors.newSingleThreadExecutor() executor.execute { println("Ejecutando tarea en hilo") } executor.shutdown() |
ExecutorService | Extensión de Executor que permite gestionar el ciclo de vida de tareas (iniciar, detener). | Ejecución, finalización y control de hilos en tareas. Permite el uso de pools de hilos. | kotlin val executorService = Executors.newFixedThreadPool(3) executorService.submit { println("Tarea en pool de hilos") } executorService.shutdown() |
ScheduledExecutorService | Extensión de ExecutorService que programa tareas periódicas o con retraso. | Programar tareas para ejecución periódica o retardada (como un temporizador). | kotlin val scheduler = Executors.newScheduledThreadPool(1) scheduler.schedule({ println("Tarea programada") }, 2, TimeUnit.SECONDS) |
ForkJoinPool | Un tipo de ExecutorService diseñado para dividir tareas en subtareas. | Realizar procesamiento en paralelo con grandes tareas divididas (útil para algoritmos recursivos). | kotlin val pool = ForkJoinPool() val result = pool.invoke(MyRecursiveTask()) class MyRecursiveTask : RecursiveTask<Int>() { override fun compute(): Int = 1 } |
CountDownLatch | Sincronizador que espera a que un conjunto de tareas completen antes de proceder. | Esperar a que varios hilos finalicen antes de continuar en el hilo principal. | kotlin val latch = CountDownLatch(3) for (i in 1..3) { Thread { println("Tarea $i") latch.countDown() }.start() } latch.await() println("Continuar") |
CyclicBarrier | Sincronizador que permite que un grupo de hilos espere entre sí en puntos de barrera. | Coordinación de hilos para que todos lleguen a un punto antes de seguir (útil en tareas paralelas). | kotlin val barrier = CyclicBarrier(3) for (i in 1..3) { Thread { println("Parte $i") barrier.await() println("Todos listos") }.start() } |
Semaphore | Controla el acceso a recursos mediante contadores de permisos. | Controlar el número de hilos que acceden a un recurso limitado al mismo tiempo. | kotlin val semaphore = Semaphore(2) for (i in 1..5) { Thread { semaphore.acquire() println("Acceso $i") semaphore.release() }.start() } |
Phaser | Sincronizador flexible que permite coordinar varias fases de ejecución entre hilos. | Sincronización de hilos en múltiples etapas o fases. | kotlin val phaser = Phaser(1) for (i in 1..3) { phaser.register() Thread { println("Fase $i") phaser.arriveAndAwaitAdvance() }.start() } phaser.arriveAndDeregister() |
CompletableFuture | Clase que representa una tarea asíncrona y permite combinar múltiples tareas. | Ejecutar y combinar múltiples tareas asíncronas de manera no bloqueante (ideal para operaciones en cadena). | kotlin val future = CompletableFuture.supplyAsync { "Tarea completada" } future.thenAccept { println(it) } |
CoroutineScope (Kotlin)** | Ámbito específico de Kotlin para crear y manejar corrutinas. | Ejecutar tareas asíncronas ligeras en Kotlin, ideal para concurrencia en un contexto más seguro. | kotlin CoroutineScope(Dispatchers.Default).launch { println("Ejecutando corrutina") } |
Dispatchers (Kotlin)** | Proporciona contexto para corrutinas en Kotlin (como Main, IO, Default, etc.). | Definir el tipo de hilo/dispatcher donde se ejecutarán las corrutinas (UI, IO, etc.). | kotlin CoroutineScope(Dispatchers.IO).launch { println("Ejecutando en IO") } |
Flow (Kotlin)** | API de Kotlin para manejo de datos asíncronos en forma de flujo. | Trabajar con datos en flujo continuo de manera asíncrona, ideal para manejo de eventos o streams. | kotlin flow { emit(1); emit(2); emit(3) }.collect { println(it) } |
Channel (Kotlin)** | Canal de comunicación para corrutinas, similar a una cola bloqueante. | Enviar y recibir datos entre corrutinas de forma segura y concurrente. | kotlin val channel = Channel<Int>() CoroutineScope(Dispatchers.Default).launch { channel.send(1) } CoroutineScope(Dispatchers.Default).launch { println(channel.receive()) } |
Mutex (Kotlin)** | Exclusión mutua para sincronización de corrutinas en Kotlin. | Proteger recursos compartidos entre corrutinas, asegurando acceso exclusivo. | kotlin val mutex = Mutex() mutex.withLock { println("Sección crítica") } |
Corrutina básica (Kotlin) | Mecanismo de Kotlin para tareas asíncronas ligeras y de alta concurrencia. | Ejecutar tareas asíncronas con poco costo, suspender y reanudar sin bloquear hilos reales. | kotlin GlobalScope.launch { delay(1000L) println("Corrutina después de 1 seg.") } println("Inmediato") |