Es un atributo para los campos de un objeto y las variables de un método. Es un aviso al compilador:
Esta variable la utilizan
varios threads a la vez; no se permite ninguna optimización del código
ejecutable. En particular, si hay varias CPUs, ni se te ocurra hacer copias
locales para acceder más deprisa.
Cuando se emplea, java se encarga de garantizar que siempre se accede al último valor asignado a la variable, y que las operaciones de escritura y lectura de la variable serán atómicas.
Declarar una variable como volátil es una forma sencilla de conseguir el mismo efecto que protegiendo mediante synchronized todos los accesos a la misma.
Temas relacionados
Vademécum
volatile en synchronized