Где хранится sun.misc.Unsafe?

Кто-нибудь знает какую-либо исчерпывающую документацию для sun.misc.Unsafe?

Я ищу документацию по Unsafe.putOrderedInt(). Это было все, что я смог найти.

public native  void putOrderedInt(Object o,
    long offset,
    int x)

     Ordered/Lazy version of #putIntVolatile(Object, long, int) 

Кто-нибудь знает лучшего источника?

Ответ 1

Есть хороший пост об этом в блоге mishadoff здесь.

Класс официально без документов, хотя.

Ответ 2

Относительно методов putOrdered.

Вы можете вызвать этот метод, чтобы установить поле volatile без использования энергозависимого хранилища. Если вы выполняете энергозависимое хранилище, у вас в основном есть барьер памяти магазина, который гарантирует, что все инструкции хранения перед барьером происходят до барьера и этой памяти видно, что данные передаются в подсистему кеша. Поэтому, когда у вас есть энергозависимое хранилище, вы должны дождаться, когда буфер хранилища будет стекать. С выполнением putOrdered thread не будет ждать, пока буфер хранилища будет стекать, и это может улучшить производительность. Однако, как следствие, сохраненное значение не будет видно сразу для других потоков.

Если вы посмотрите на AtomicLong (или другие классы Atomic), существует метод lazySet, который на самом деле выполняет putOrderedLong. Javadoc в этом методе:

В конце концов задается заданное значение.