Analizamos las reglas de visibilidad y orden en Java Memory Model: qué significa la relación
happens-before, cómo y cuándo ayudan
volatile,
synchronized, los campos finales (
final), y por qué sin ellos aparecen datos «desactualizados». Mostraremos la publicación segura de objetos, un
double-checked locking correcto, el acceso de bajo nivel mediante
VarHandle, la influencia del false sharing y la anotación
@Contended, así como observaciones prácticas sobre
Thread.start()/
Thread.join(),
Future.get() y los microbenchmarks
JMH.