[concurrency-interest] Atomic assignment

Joe Bowbeer joe.bowbeer at gmail.com
Fri May 8 15:31:20 EDT 2009

JLS 17.7 states that writes and reads of volatile long and double values are
always atomic (see below), and the JVMs have been in compliance for at least
5 years.

There's source to test corruption in the bug report:


( from http://java.sun.com/docs/books/jls/third_edition/html/memory.html )

17.7 Non-atomic Treatment of double and long
> Some implementations may find it convenient to divide a single write action
> on a 64-bit long or double value into two write actions on adjacent 32 bit
> values. For efficiency's sake, this behavior is implementation specific;
> Java virtual machines are free to perform writes to long and double values
> atomically or in two parts.
> For the purposes of the Java programming language memory model, a single
> write to a non-volatile long or double value is treated as two separate
> writes: one to each 32-bit half. This can result in a situation where a
> thread sees the first 32 bits of a 64 bit value from one write, and the
> second 32 bits from another write. Writes and reads of volatile long and
> double values are always atomic. Writes to and reads of references are
> always atomic, regardless of whether they are implemented as 32 or 64 bit
> values.
> VM implementors are encouraged to avoid splitting their 64-bit values where
> possible. Programmers are encouraged to declare shared 64-bit values as
> volatile or synchronize their programs correctly to avoid possible
> complications.


On Fri, May 8, 2009 at 11:37 AM, Christian Vest Hansen wrote:

> Everything I have read on volatile under the Java 5 JMM until I read
> that bug report, have either stated clearly or assumed that there was
> no atomicity guarantees in volatile - only visibility guarantees.
> I believe that JCiP and numerous articles on the internet, are pretty
> clear on this. (Not having read the JLS or JMM myself.)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cs.oswego.edu/pipermail/concurrency-interest/attachments/20090508/90d7a7d0/attachment.html>

More information about the Concurrency-interest mailing list