Aprende a diseñar programas concurrentes en Java, diferenciando concurrencia y paralelismo dentro de la JVM. Conocerás el Java Memory Model, el rol del planificador del sistema operativo y cómo elegir pools y tareas según si son I/O-bound o CPU-bound.
El enfoque es práctico y directo: verás cómo la JVM administra hilos nativos, cómo usar ExecutorService, CompletableFuture y utilidades de sincronización para mantener la seguridad de memoria y la escalabilidad.