Esta lección trata de qué es un recurso compartido en aplicaciones multihilo, por qué surgen condiciones de carrera (race condition) y «actualizaciones perdidas», y cómo proteger los datos con
synchronized. Veremos técnicas básicas de sincronización (métodos y bloques), hablaremos de herramientas modernas de
java.util.concurrent (
Lock,
ReentrantLock,
Semaphore y otros), veremos ejemplos prácticos con el incremento de un contador y errores típicos (no atomicidad de
i
++, objeto de bloqueo incorrecto, mitos sobre
volatile).