Pregunta / volatile

Hola a todos, pues de nuevo con más dudas, esta ves me acosa la incógnita de como usar volatile, revise varias ligas en esta: encontré este ejemplo, uno de los más completos:

Lo copio y pego agradeciendo a los autores.

 
 

La cosa es que si no uso volatile me arroja el mismo resultado y creo que es por que desde la versión 5 de Java convierte las variables a volatiles automáticamente o solo las que vayan a ser modificadas (), creo entender los concepto y diferencias: por ejemplo que el manejador de memoria de la VM cambia el valor directamente y no en el buffer (o memoria intermedia), aun así me quedo con muchas dudas.

Agradecería mucho la opinión y guia de los expertos en el foro.
Y pues sigo recolectando información hasta que me compre el libro (Java Concurrency in Practice. Addison-Wesley, 2006. With Tim Peierls, Joshua Bloch, Joseph Bowbeer, David Holmes, and Doug Lea.)

Jejeje ya de paso, me podrían decir como usar @ThreadSafe y @GuardedBy("this") y para que sirven, aun así investigare por mi cuenta :)

Gracias por su tiempo chicos bye : ).

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de rodrigo salado anaya

import net.jcip.annotations.*;

Para agregar las anotaciones faltantes.

Imagen de ezamudio

anotaciones

@ThreadSafe y @GuardedBy no son anotaciones estándar de Java 5 ni 6

Es muy difícil probar las variables volatile, porque necesitas hacer un acceso realmente concurrente (que dos hilos intenten modificar la variable exactamente al mismo tiempo, una volátil y una normal) y no tienes control sobre eso. La cosa es que si tienes una variable nativa que es susceptible de ser leída por dos o más hilos al mismo tiempo, te conviene usar  .

Imagen de ArenasMx

leyendo.....

en la gui de certificacioón SCJP en el capitulo uno habla sobre el uso de las palabras reservadas como volatile aunque los ejemplo que propone no son lo suficientemente claros para entender el uso y como lo explica ezamudio es muy muy claro

Imagen de rodrigo salado anaya

Gracias por la información.

Gracias por la información de las anotaciones @EZamudio, y pues estuve de necio y saque un ejemplo con una volátil y un no-volátil.

Saca algo como esto:
 

Este es el código de mi ejemplo:
 
 
 
 
Y pues si como me lo dices, esta cañón poder probar volatile, por el momento creo que me quedo con lo que entiendo de esto.
También esta interesante que no se puede usar volatile con operadores ++ y --, pero eso ya es otra onda ( por que en realidad son más de una operación , más no atómica), en el ejemplo aun que se incrementan las variables se hace de un jalón:  .

Pues muchas gracias por el tiempo, opinión y si te surge (a quien sea ) una idea de como probarlo en algún momento te lo agradecería me lo compartieras. Bye y suerte a todos : ).