Does this ordering happen by the JVM at runtime, or is it part of compilation? Is there a static analysis heuristic which could detect false sharing? Maybe his could be better solved in the compiler than with implementation-specific hacks like these?