Вопрос проверяет умение отличать проблемы видимости от проблем атомарности и правильно выбирать средства синхронизации.
Короткий ответ
volatile не гарантирует корректную работу, если операция состоит из нескольких шагов. Он не защищает от гонок данных и не обеспечивает атомарность. При изменении нескольких связанных переменных volatile также бесполезен. Для таких случаев нужны блокировки или атомарные классы. Использование volatile в сложной логике приводит к скрытым багам.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.