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