В чем разница между AtomicInteger и Integer

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

Ответ

AtomicInteger — это потокобезопасный класс, оборачивающий int и предоставляющий атомарные операции (например, incrementAndGet(), compareAndSet()). Гарантирует корректность при многопоточном доступе без блокировок.

Integer — immutable-класс-обертка для int, не поддерживает атомарные операции. Изменение значения требует создания нового объекта, что небезопасно в многопоточной среде.

Пример:

AtomicInteger atomicInt = new AtomicInteger(0);
atomicInt.incrementAndGet(); // Атомарно увеличит на 1

Integer nonAtomicInt = 0;
nonAtomicInt++; // Небезопасно при параллельном доступе

Итог:

  • AtomicInteger — для многопоточных сценариев.
  • Integer — для однопоточных или immutable-значений.