sun.misc.Unsafe记录在哪里?

Jam*_*sev 63 java unsafe java-api

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

是我能找到的全部.有谁知道更好的来源?

寻找Javadoc Unsafe.putOrderedInt()只找到

在此输入图像描述

mwe*_*chy 55

在mishadoff的博客上有一篇很好的帖子:http://mishadoff.github.io/blog/java-magic-part-4-sun-dot-misc-dot-unsafe/ .该课程正式无证.

  • 这个类的源代码附带了很多文档:http://www.docjar.com/html/api/sun/misc/Unsafe.java.html (15认同)
  • @raphw这是针对OpenJDK的,开发者必须比Oracle更开放.感谢您的链接,它非常方便. (2认同)
  • 其他JDK甚至可能不提供`sun.misc.Unsafe`,因为它是一个内部类.但是,提供该类的Thos JDK通常会选择相同的实现.甚至Android也有一个具有相同的"公共"API. (2认同)

Iva*_*nic 8

关于putOrdered方法..

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

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

最终设置为给定值.