¿Puedo declarar algo como esto?¿Puede la variable volátil definirse como estática en Java?
static volatile boolean first=false;
¿Puedo declarar algo como esto?¿Puede la variable volátil definirse como estática en Java?
static volatile boolean first=false;
Para ampliar el comentario de Michael.
static
simplemente significa que no está asociado con una instancia de la clase contenedora.
volatile
simplemente significa que el valor puede ser cambiado por otros hilos sin previo aviso.
Así que su pregunta se reduce a "¿un campo no asociado con una instancia de la clase contenedora puede ser cambiado por otro hilo sin previo aviso?"
Como Michael señaló, la respuesta a esa pregunta es sí. La asociación de instancia es ortogonal a la modificación simultánea.
Ahora que es como respuestas excelentes .. –
http://stackoverflow.com/questions/2423622/volatile-vs-static-in-java –
Por curiosidad, ¿qué pasa si presentamos un 'final' allí? – Skynet
Claro. Los efectos de los dos modificadores son completamente ortogonales.
Sí, puedes.
Una variable static
en Java se almacena una vez por clase (ni una vez por objeto, como las variables no estáticas). Esto significa que todos sus objetos (y métodos estáticos) comparten la misma variable.
declarando una variable como volatile
(ya sea static
o no) indica que la variable se accederá con frecuencia por varios hilos. En Java, esto se reduce a instruir a los hilos que no pueden almacenar en caché el valor de la variable, pero tendrán que volver a escribir inmediatamente después de mutar para que otros hilos vean el cambio. (Los hilos en Java son libres de variables de caché por defecto).
Otra pregunta interesante sería: ¿Hay una diferencia entre una variable 'estática 'y una' variable estática'? Una vez leí que las variables estáticas no se almacenan en caché por hilos, por lo que no es realmente necesario declarar una variable estática con volátil. ¿Algún comentario sobre esto? – basZero
Existe una diferencia, y se deduce de la respuesta: una variable 'estática 'se almacena una vez por clase. Una variable 'variable estática 'se almacena una vez por clase _y_ se accederá con frecuencia por varios hilos, es decir, las lecturas no se pueden almacenar en caché. –
lo has probado? ¿que pasó? – Mat
Este sitio no reemplaza a google y lee los documentos. No es un sitio para brindarle respuestas "listas". Se supone que debes hacer preguntas específicas relacionadas con la programación que no puedes encontrar fácilmente mediante una búsqueda normal. También se supone que al menos debes tratar de aclarar tus dudas (ortografía, uso de mayúsculas, recuento de formato de código) si quieres buenas respuestas. Podría haber encontrado la respuesta a esa pregunta en aproximadamente 30 segundos de googlear. – Mat
@Saurabh: ese es exactamente el punto. ¿De qué sirve hacer la pregunta si puede encontrar fácilmente la respuesta usted mismo? Este sitio no está diseñado para que las personas hagan preguntas porque les apetezca, es para ayudar a las personas con problemas que tienen, preferiblemente solo después de que hayan tenido que lidiar con ellas por sí mismos. En lugar de pasar los 30 buscando la respuesta usted mismo, en cambio, ha utilizado varios minutos del tiempo de * otras * personas para responder algo que debería poder contestar usted mismo. – Mac