Получи случайную криптовалюту за регистрацию!

AtomicInteger, AtomicLong, AtomicBoolean, AtomicDouble • Атом | Java Guru 🤓

AtomicInteger, AtomicLong, AtomicBoolean, AtomicDouble

• Атомики предоставляют возможность изменения переменной в нескольких потоках без эффекта гонок.
• Например, 10 тредов инкрементят AtomicInt = 0, основной тред ждет их выполнения через countdown-latch, далее проверка атомика должна показать 10.
• Основной механизм под капотом атомиков — цикл cas (compare-and-set). На примере increment:
1. Читаем старое значение
2. Перед set'ом проверяем старое значение, если оно не изменилось, сетаем старое + 1
3. Если изменилось, в след. итерации получаем «новое» старое, далее см. п. 1