Атомарные типы данных в Java — это классы из пакета java.util.concurrent.atomic, предоставляющие потокобезопасные операции над одиночными переменными без использования явных блокировок. Они основаны на механизме сравнения и замены (Compare-And-Swap, CAS).
Преимущества:
synchronized для простых операций над одиночными переменными, так как не требуют накладных расходов на блокировку и разблокировку.Примеры атомарных типов:
AtomicIntegerAtomicLongAtomicBooleanAtomicReference (для объектов)Основной метод для выполнения атомарных операций — compareAndSet(expectedValue, newValue). Он атомарно устанавливает значение переменной в newValue, только если текущее значение равно expectedValue. Возвращает true при успешном выполнении.
Пример использования AtomicInteger:
java
Необходимы для реализации потокобезопасных счетчиков, уникальных идентификаторов, атомарной модификации состояний объектов и других сценариев, где требуется потокобезопасная работа с одиночными переменными без явных блокировок.