According to Java Memory Model, instructions can be reordered as long as the execution is well-formed.
So I wonder, is it possible that the following codes produces the
Due to being a user system call, compilers shouldn't reorder them in the same thread. If this was not true, we could even experience reordering effects in System.out.println(independent values); I guess that access to the System's/OS's clock creates a sort of relationship between these operations (always for the current thread), so theoretically there is some kind of dependency between them. Probably, JVM considers this issue and never reorders User System calls.