Собственная/внутренняя реализация атомарных переменных Java

Как атомарные переменные Java, такие как AtomicInteger, работают внутри для достижения взаимного исключения/атомарности?

Есть ли какие-либо блокировки на уровне машинных инструкций, которые обеспечивают лучшую производительность?

Или сама инструкция уровня атомарной машины делает это по сравнению с обычным набором машинных инструкций, где значение копируется из основной памяти в регистр/кэш, и операция выполняется в этом регистре, а затем сохраняется обратно в основную память.


person Xavier DSouza    schedule 07.08.2017    source источник


Ответы (1)


на самом деле, он использует инструкции ЦП, уже доступные для примитивов такого типа. Или, по крайней мере, в процессорах, где существуют эти инструкции (не знаю, все ли, это часть переносимого материала jvm). В тех, которые этого не делают, может использоваться какая-то блокировка.

я думаю, вы уже это сделали, но на всякий случай это поможет: здесь вы можете прочитать некоторые краткие подробности.

person albert_nil    schedule 07.08.2017