I read from Effective Java that In the absence of synchronization the following sequence A below can be converted into sequence B by the virtual machine and this is called <
Reordering relates to performance of execution where as reordering doesn't impact performance.
Hoisting is done to reordering of Memory barrier instructions.