Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AtomicInteger是基于JNI实现的吗?_Java_Multithreading_Jvm_Java Native Interface - Fatal编程技术网

Java AtomicInteger是基于JNI实现的吗?

Java AtomicInteger是基于JNI实现的吗?,java,multithreading,jvm,java-native-interface,Java,Multithreading,Jvm,Java Native Interface,Soneone告诉我这是使用JNI实现的,所以它比同步快得多。这是真的吗?它不太可能基于JNI实现,因为这将意味着巨大的开销。上次我查看OpenJDK实现时,它基于sun.misc.Unsafe中的方法,这些方法大多作为JVM原语实现(方法调用是专门在JVM中使用本机代码实现的)。说到问题的关键,AtomicInteger不调用同步的锁机制,因此,在适当的情况下可以提供性能优势。他们实际上是说“JNI”还是说“本机代码”?这有很大的区别。JNI是一种与外部本机代码互操作的方法。在本例中,我希望代

Soneone告诉我这是使用JNI实现的,所以它比同步快得多。这是真的吗?

它不太可能基于JNI实现,因为这将意味着巨大的开销。上次我查看OpenJDK实现时,它基于
sun.misc.Unsafe
中的方法,这些方法大多作为JVM原语实现(方法调用是专门在JVM中使用本机代码实现的)。

说到问题的关键,AtomicInteger不调用同步的锁机制,因此,在适当的情况下可以提供性能优势。

他们实际上是说“JNI”还是说“本机代码”?这有很大的区别。JNI是一种与外部本机代码互操作的方法。在本例中,我希望代码是JVM的一部分,因此它不需要经历太多的麻烦。+1:我认为它被称为JVM intrinsic。不安全中的许多“本机”方法在编译为本机代码时有效地内联。一个相当重要的注意事项是(在API中)没有定义使用sun.misc.Unsafe,因此sun/Oracle/OpenJDK以外的其他VM可能以完全不同的方式实现AtomicInteger。如果您不必强制使用AtomicInteger,那么使用AtomicInteger可能是一个好主意,因为它在任何VM上都可能表现良好。