Volatile proporciona un mecanismo de sincronización débil para garantizar que las actualizaciones de variables se notifiquen a otros subprocesos. Las variables volátiles no se almacenan en caché en registros ni son invisibles para otros procesadores, por lo que la lectura de una variable volátil siempre devuelve el valor escrito más recientemente. Se puede imaginar con la siguiente semántica, pero volátil es un mecanismo de sincronización más liviano. Volátil solo puede garantizar visibilidad, pero no atomicidad. En otras palabras, las variables volátiles no se pueden utilizar en operaciones compuestas, como i++.
Copie el código de código de la siguiente manera:
setValue vacío sincronizado público (valor int) {
this.value = valor;
}
público sincronizado int getValue(){
valor de retorno;
}
Las variables volátiles solo se pueden utilizar cuando se cumplen todas las condiciones siguientes:
1. La operación de escritura en la variable no depende del valor actual de la variable, o puede asegurarse de que solo un subproceso actualice el valor de la variable.
2. Esta variable no se incluirá en la condición de invariancia junto con otras variables de estado.
3. No es necesario bloquear al acceder a las variables.