Avatar ·

¿Para qué sirve la palabra clave volatile en Java? Explique con ejemplos

¡Hola a todos! Soy un desarrollador Java principiante y últimamente estoy estudiando activamente multithreading. Me topé con la palabra clave `volatile`, pero no termino de entender para qué sirve y cuándo usarla. Escribí un pequeño código donde un hilo cambia la bandera `running`, y otro hilo la verifica en un bucle. Sin `volatile`, el programa a veces funciona incorrectamente: el segundo hilo no ve el cambio y continúa ejecutándose. Aquí está mi código: ```java public class TestVolatile { private static boolean running = true; public static void main(String[] args) throws InterruptedException { Thread worker = new Thread(() -> { while (running) { // hacemos algo } System.out.println("Worker detenido"); }); worker.start(); Thread.sleep(1000); running = false; // cambiamos la bandera en el hilo principal System.out.println("Bandera establecida en false"); } } ``` El problema es que a veces el prog