blog/concurrency-in-java · 12 abr 2022 · ↻ 16 ago 2026 · 3 min de lectura
Concurrencia en Java
Aprende los fundamentos y conceptos avanzados de multihilo y concurrencia en Java.
Java ofrece APIs sólidas para ejecutar trabajo concurrente y aprovechar mejor los recursos del sistema.
Crear hilos
Extender Thread es útil para entender el modelo, aunque en aplicaciones reales suele preferirse separar la tarea de su ejecución.
public class MyThread extends Thread {
public void run() {
System.out.println("Running in thread: " + Thread.currentThread().getName());
}
}
Usar Runnable
Runnable permite reutilizar la tarea con distintos ejecutores.
Runnable task = () -> System.out.println("Runnable Task");
new Thread(task).start();
Ciclo de vida y sincronización
Un hilo puede estar nuevo, ejecutable, en ejecución, bloqueado o terminado. Cuando varios hilos modifican el mismo estado, protege las secciones críticas.
public synchronized void increment() {
count++;
}
Locks y ejecutores
Los ExecutorService administran pools de hilos, límites y apagado ordenado. Usa Lock cuando necesitas control explícito y libéralo siempre en finally.
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> doWork());
executor.shutdown();
Errores frecuentes
Las condiciones de carrera, los deadlocks y la inanición aparecen cuando el acceso compartido no tiene límites claros. Diseña la propiedad de los datos y mide antes de aumentar el paralelismo.
Resumen
La concurrencia no es solo ejecutar más tareas: es mantener estado, fallos y recursos bajo control.