...
Semantics of volatile
do not guarantee the atomicity of complex operations that involve read-modify-write sequences such as incrementing a value. See CON01-J. Design APIs that ensure atomicity of composite operations and visibility of resultsDo not assume all primitive operators are atomic for more information.
Exceptions
CON25-EX1: If all reads and writes of 64 bit long
and double
values occur within a synchronized method call, the atomicity of the read/write is guaranteed. This requires that no unsynchronized methods in the class expose the value and that the value is inaccessible (directly or indirectly) from other code. (CON01-J. Design APIs that ensure atomicity of composite operations and visibility of resultsDo not assume all primitive operators are atomic)
CON25-EX2: Systems that guarantee that 64 bit long
and double
values are read and written as atomic operations may safely ignore this guideline.
...