sun.misc.unsafe 记录在哪里?[已关闭]

2022-08-31 14:02:41

有谁知道任何全面的文档?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 方法..

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

如果你看一下AtomicLong(或其他Atomic类),有一个lazySet方法实际上执行putOrderedLong。此方法上的 javadoc 是:

最终设置为给定值。


推荐