На основе Javadoc of Unsafe (putOrderedInt используется в AtomicInteger.lazySet)
/**
* Version of {@link #putObjectVolatile(Object, long, Object)}
* that does not guarantee immediate visibility of the store to
* other threads. This method is generally only useful if the
* underlying field is a Java volatile (or if an array cell, one
* that is otherwise only accessed using volatile accesses).
*/
public native void putOrderedObject(Object o, long offset, Object x);
/** Ordered/Lazy version of {@link #putIntVolatile(Object, long, int)} */
public native void putOrderedInt(Object o, long offset, int x);
Поля поддержки в классах AtomicXXX являются энергозависимыми.Похоже, что lazySet записывает в эти поля, как будто они не являются изменчивыми, что удалит ожидаемые ребра до того, как вы ожидаете.Как отмечено в вашей ссылке, это было бы полезно для того, чтобы значения NULL имели право на сборщик мусора, не подвергаясь изменчивой записи.
Редактировать:
Это ответ на ваше обновление.
Если вы посмотрите на цитату, указанную вами по ссылке, вы потеряете все гарантии памяти, которые у вас были с изменчивой записью.
lazySet не будет упорядочен выше того места, где он записывается.до, но без какой-либо другой фактической синхронизации вы теряете гарантию, что потребитель увидит любые изменения, которые были написаны до него.Совершенно законно откладывать запись myAtomicFlag и туда для любых записей до него, пока не произойдет какая-либо другая форма синхронизации.