Re: what is the point of volatile?



Lew wrote:
apm35@xxxxxxxxxxxxxxxxxx wrote:
Can anyone tell me what the value is of 'volatile' please? It seems to
me to be a lazy way of protecting a private data member without having
to write a synchronized getter and setter. But it only works for types
that can be updated atomically. This sounds a bit tricky to me....

The point of volatile is to provide a kind of lightweight synchronization.

I don't know why you call it "lazy". Nor is it limited to private members; volatility is orthogonal to access.

Reads from a volatile member are guaranteed to see previous writes to that variable. In fact, reads from a volatile variable guarantee that all writes prior to the latest write to that variable are visible. This is not so for non-volatile variables. That is the new (as of 5) memory model for Java.

It's worth pointing out that volatile doesn't mean atomic:
volatile int a;

++a; // Still two separate accesses to a

I didn't fully understood volatile until I read about it in the book Java Concurrency In Practice
<http://virtualinfinity.net/wordpress/technical-book-recommendations/java-concurrency-in-practice/>

The only real use I've found for it is for a simple you-should-shut-down-now flag to a tight-looped thread. That thread only needs to read, and other threads only need to write.
--
Daniel Pitts' Tech Blog: <http://virtualinfinity.net/wordpress/>
.



Relevant Pages

  • Re: what is the point of volatile?
    ... me to be a lazy way of protecting a private data member without having ... I don't know why you call it "lazy". ... Reads from a volatile member are guaranteed to see previous writes to that variable. ... reads from a volatile variable guarantee that all writes prior to the latest write to that variable are visible. ...
    (comp.lang.java.help)
  • Re: what is the point of volatile?
    ... me to be a lazy way of protecting a private data member without having ... to write a synchronized getter and setter. ... Reads from a volatile member are guaranteed to see previous writes to that variable. ...
    (comp.lang.java.help)
  • Re: what is the point of volatile?
    ... me to be a lazy way of protecting a private data member without having ... to write a synchronized getter and setter. ... Reads from a volatile member are guaranteed to see previous writes to that variable. ...
    (comp.lang.java.help)
  • Re: what is the point of volatile?
    ... me to be a lazy way of protecting a private data member without having ... to write a synchronized getter and setter. ... Reads from a volatile member are guaranteed to see previous writes to that variable. ...
    (comp.lang.java.help)
  • what is the point of volatile?
    ... Can anyone tell me what the value is of 'volatile' please? ... me to be a lazy way of protecting a private data member without having ...
    (comp.lang.java.help)