Soneone сказал мне, что AtomicInteger
реализован с использованием JNI, поэтому он намного быстрее, чем синхронизация. Это правда?AtomicInteger реализован на базе JNI?
ответ
Это вряд ли будет реализовано на основе JNI, поскольку это будет означать значительные накладные расходы. В прошлый раз, когда я смотрел, реализация OpenJDK основана на методах в sun.misc.Unsafe
, которые в основном реализованы как примитивы JVM (вызовы методов, которые специально реализованы с помощью собственного кода в JVM).
+1: Я думаю, что это называется JVM intrinsics. Многие «родные» методы в Unsafe эффективно встроены при компиляции в собственный код. –
Достаточно важно отметить, что он не определен (в API) для использования sun.misc.Unsafe, поэтому другие виртуальные машины, чем Sun/Oracle/OpenJDK, могут реализовать AtomicInteger совершенно по-другому. Вероятно, это хорошая идея использовать AtomicInteger, если вам не нужно его запускать, поскольку он, вероятно, хорошо работает на любой виртуальной машине. –
Что касается вопроса, AtomicInteger не вызывает механизм блокировки синхронизации, поэтому может предложить преимущества производительности при подходящих обстоятельствах.
- 1. Присвоение AtomicInteger
- 2. AtomicInteger атомный
- 3. Карта AtomicInteger
- 4. Свойства AtomicInteger
- 5. ConvertTo не реализован в базе TypeConverter
- 6. Двухмерный массив AtomicInteger
- 7. Является ли AtomicInteger честным?
- 8. Когда AtomicInteger предпочитает синхронизировать?
- 9. AtomicInteger lazySet против набора
- 10. AtomicInteger в многопоточной
- 11. Совместимый с потоком AtomicInteger
- 12. Что означает «ложный сбой» на AtomicInteger weakCompareAndSet?
- 13. Behavoir Threads с AtomicInteger
- 14. AtomicIntegerArray vs AtomicInteger []
- 15. Расчет AtomicInteger в цикле
- 16. Как использовать AtomicInteger?
- 17. AtomicInteger incrementAndGet atomicity
- 18. Почему AtomicInteger реализует Serializable
- 19. Преобразование AtomicInteger в int
- 20. ThreadLocalRandom или AtomicInteger
- 21. AtomicInteger в threadDefaultFactory
- 22. AtomicInteger или LongAccumulator
- 23. AtomicInteger: сохранить неотрицательный
- 24. Может ли JNI быть реализован для использования класса C++ в DLL для записи файла на диск?
- 25. сравнить AtomicInteger без его настройки
- 26. Реализация AtomicInteger и дублирование кода
- 27. Внедрение addAndGet в классе AtomicInteger
- 28. AtomicInteger vs синхронизированные геттеры/сеттеры
- 29. Являются ли примитивы синхронизации AtomicInteger?
- 30. AtomicInteger работает медленнее, чем синхронизировано
Действительно ли они сказали «JNI» или они сказали «собственный код»? Есть большая разница. –
В чем разница? – user705414
JNI - это способ взаимодействия с внутренним кодом * external *. В этом случае я ожидаю, что код станет частью JVM, поэтому ему не нужно проходить почти столько же обручей. –