Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: atomic, cas

Как работает Atomic под капотом?

Вопрос проверяет понимание неблокирующей синхронизации и того, как Java обеспечивает атомарность без synchronized.

Короткий ответ

Классы Atomic* используют атомарные инструкции процессора.
Основной механизм — операция CAS (Compare-And-Swap).
Операции выполняются без блокировок.
Это позволяет работать быстрее и масштабируемее под нагрузкой.

Длинный ответ

Классы Atomic* из пакета java.util.concurrent.atomic реализуют атомарность без традиционных блокировок.

Основная идея

Atomic-классы используют неблокирующие алгоритмы на основе CAS (Compare-And-Swap).

CAS — это операция вида:

  1. Сравнить текущее значение с ожидаемым

  2. Если совпадает — записать новое значение

  3. Если нет — операция не выполняется

Все это происходит как одна атомарная инструкция CPU.

Как выглядит CAS логически

Упрощенно:

  1. Поток читает текущее значение

  2. Вычисляет новое

  3. Пытается заменить старое на новое

  4. Если другой поток уже изменил значение — попытка повторяется

Пример на уровне API

AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet();

Внутри:

  1. Читается текущее значение

  2. Вызывается CAS

  3. При неудаче операция повторяется в цикле

Почему это быстрее synchronized

Atomic-классы:

  1. Не блокируют потоки

  2. Не переводят поток в состояние ожидания

  3. Лучше масштабируются при большом числе потоков

Ограничения Atomic

Важно понимать:

  1. Атомарна одна операция, а не набор

  2. Сложные инварианты трудно поддерживать

  3. Возможны активные повторные попытки (spin)

Краткий вывод

Atomic-классы реализованы через CAS и неблокирующие алгоритмы.
Они эффективны для простых операций над общими данными.

Уровень

  • Рейтинг:

    5

  • Сложность:

    8

Навыки

  • Java

    Java

Ключевые слова

#atomic

#cas

Подпишись на Java Developer в телеграм