The Java Language Specification states only 'write' operation is treated as 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.
But the book Java Concurrency In Practice states 'read' or 'write' operation is treated as two parts:
the JVM is permitted to treat a 64-bit read or write as two separate 32-bit operations.
Which one is accurate?