В чем разница между Atomic и Synchronized

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

Ответ

Atomic использует низкоуровневые механизмы процессора (CAS - Compare-And-Swap) для атомарных операций, что делает его более эффективным для простых операций (инкремент, обновление). Synchronized блокирует весь метод или блок кода, обеспечивая потокобезопасность, но с большими накладными расходами.

// Atomic
val atomicInt = AtomicInteger(0)
atomicInt.incrementAndGet() // потокобезопасно

// Synchronized
@Synchronized
fun increment() {
    counter++ // блокирует весь метод
}

Atomic лучше для одиночных операций, Synchronized — для сложных сценариев с несколькими операциями.