Работал ли с Atomic классами

«Работал ли с Atomic классами» — вопрос из категории Многопоточность, который задают на 24% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. Atomic классы (AtomicInteger, AtomicBoolean, AtomicReference и др.) из пакета java.util.concurrent.atomic обеспечивают атомарные операции без блокировок. Полезны для потокобезопасных операций, например, счетчиков или флагов.

Пример с AtomicInteger:

val counter = AtomicInteger(0)

fun increment() {
    counter.incrementAndGet() // атомарное увеличение
}

Особенности:

  • Основаны на CAS (Compare-And-Swap)
  • Не блокируют потоки (в отличие от synchronized)
  • Подходят для простых атомарных операций
  • Для сложных сценариев лучше использовать Mutex или другие механизмы синхронизации