Почему java.util.concurrent.atomic.AtomicBoolean внутренне реализуется с помощью int? - программирование
Подтвердить что ты не робот

Почему java.util.concurrent.atomic.AtomicBoolean внутренне реализуется с помощью int?

AtomicBoolean сохраняет свое значение в:

private volatile int value;

Затем, например, извлечение его значения выполняется следующим образом:

    public final boolean get() {
    return value != 0;
}

В чем причина этого? Почему boolean не использовался?

4b9b3361

Ответ 1

AFAIK, int - это наименьший тип операций CAS, которые могут быть реализованы для разных типов машин.

Примечание: поскольку выделение объектов равно 8 байтам, использование меньшего типа не сохранит никакой памяти.

Ответ 2

Вероятно, это возможность основывать несколько классов Atomic на той же базе (Unsafe), которая использует целое число и обеспечивает операцию сравнения и свопинга.

Concurrency в Практике дает хорошее объяснение внутренней работы.