Что такое ABA-проблема?

Ответ

Значение сменилось с A на B и обратно на A. CAS это не видит. Решение: AtomicStampedReference с версией.

Разбор: ABA возникает, когда значение успело смениться A→B→A между чтением и CAS: операция compareAndSet видит прежнее A и ошибочно считает, что ничего не менялось, хотя промежуточные изменения были. Лечится привязкой версии/метки к значению (AtomicStampedReference) или AtomicMarkableReference. Ловушка дистракторов — подмена ABA на гонку записи, дедлок или проблему видимости, которые относятся к другим аспектам конкурентности.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться