- Desde una perspectiva técnica, no es necesaria la sincronización para las escrituras en un hilo para ser percibidos en otro hilo. Lo que necesita es un sucede antes del borde. Es probable que
volatile
o synchronized
se usen para lograr el límite anterior. Ambas técnicas dan como resultado un borde sincronizado. Entonces, en la práctica, probablemente usará la sincronización para administrar el estado de su booleano.
- Sí. Tenga en cuenta que no está cambiando el estado del objeto booleano. Solo está modificando la referencia al objeto booleano. La sección 17.7 de la especificación del lenguaje establece que "escribe y lee referencias siempre son atómicas".
Actualización: Permítanme exponer sobre la necesidad de un borde anterior. Sin una ventaja anterior, los cambios que un hilo hace a la variable nunca serán percibidos por los otros hilos. No es simplemente que el cambio se perciba en un mal momento, como entre una lectura y una escritura.El cambio puede nunca ser percibido.
Digamos que tenemos una variable booleana que inicializamos en falso. Entonces comenzamos dos hilos. El primer hilo establece la variable en verdadero y se detiene. El segundo hilo comprueba continuamente la variable hasta que sea verdadera, después de lo cual se detiene. No hay garantía de que el segundo subproceso vea la variable como verdadera.
1) sí 2) no. – Tom
¿Está creando una clase 'Boolean' distinta de la clase' java.lang.Boolean'? –