bwawok eluded to it, but the volatile keyword isnt only for memory visibility. Before Java 1.5 was released the volatile keyword declared that the field will get the most recent value of the object by hitting main memory each time for reads and flushing for writes.
Today's volatile keyword syas two very important things:
- Dont worry about how but know that when reading a volatile field you will always have the most up to date value.
- A compiler cannot re order a volatile read/write as to maintain program order.