在Brian Goetz 等人的《 Java Concurrency in Practice 》一书中:
如果您不能确保在另一个线程加载该共享引用之前发布共享引用,那么可以通过写入其字段来重新排序对新对象的引用的写入(从使用该对象的线程的角度来看)。在这种情况下,另一个线程可以看到对象引用的最新值,但该对象的部分或全部状态(部分构造的对象)的值已过期。
这是否意味着:在发布对象的线程中,对新对象的引用的写入不会随着对其字段的写入而重新排序;对其字段的写入发生在引用的写入之前。但是,该发布线程可能会在刷新更新的对象字段之前刷新对主内存的更新引用。因此,使用对象的线程可能会看到对象的非空引用,但会看到对象字段的过时值?从这个意义上说,操作是为消费线程重新排序的。