67

有谁知道任何全面的文档sun.misc.Unsafe

我正在寻找关于Unsafe.putOrderedInt(). 就是我所能找到的。

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

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

有谁知道更好的来源?

4

2 回答 2

60

mishadoff 的博客上有一篇关于它的好文章

不过,该课程没有正式记录。

于 2013-05-29T16:30:18.083 回答
9

关于putOrdered方法..

您可以调用此方法来设置易失性字段而不使用易失性存储。如果您执行易失性存储,则基本上有一个存储内存屏障,可确保所有存储指令在屏障之前发生,在屏障之前发生并且该内存是可见的确保数据传播到缓存子系统。因此,当您拥有易失性存储时,您必须等待存储缓冲区耗尽。使用putOrdered线程执行将不会等待存储缓冲区耗尽,这可以提高性能。 . 但是,因此存储的值不会立即对其他线程可见..

如果您查看AtomicLong(或其他 Atomic 类),则有一个实际执行putOrderedLong的lazySet方法。这个方法的javadoc是:

最终设置为给定值。

于 2014-11-18T10:44:24.843 回答