Sobes.tech
Junior — Middle

¿En qué casos se debe usar la palabra clave volatile en Java?

sobes.tech AI

Respuesta de la IA

La palabra clave volatile en Java se usa para indicar una variable cuyo valor puede cambiarse por varios hilos al mismo tiempo. Garantiza que la lectura y escritura de esta variable ocurrirán directamente desde la memoria principal, no desde la caché del hilo, asegurando la visibilidad de los cambios entre hilos.

Se debe usar volatile en los casos en que:

  • La variable puede cambiar en un hilo y leerse en otro.
  • No se requiere atomicidad en operaciones complejas (por ejemplo, incremento), solo se garantiza la actualidad del valor.
  • Se desea evitar mecanismos de sincronización más pesados (por ejemplo, synchronized), cuando basta con garantizar la visibilidad de los cambios.

Ejemplo:

class Flag {
    private volatile boolean stop = false;

    public void requestStop() {
        stop = true;
    }

    public void run() {
        while (!stop) {
            // trabajo
        }
    }
}

Aquí, sin volatile, el hilo que ejecuta run() podría no ver el cambio en stop.