Sobes.tech
Back to questions
Junior — Middle
65

Какое поведение обеспечивает использование ключевого слова volatile в Java при работе с переменными?

Answer from AI

sobes.tech AI

Ключевое слово volatile в Java гарантирует, что чтение и запись переменной будут происходить напрямую из основной памяти, а не из кэша процессора или локальной копии потока. Это обеспечивает:

  • Видимость изменений: когда один поток изменяет значение volatile-переменной, другие потоки сразу увидят это изменение.
  • Запрет переупорядочивания: операции с volatile-переменной не будут переставлены компилятором или процессором относительно других операций.

Пример использования:

public class Flag {
    private volatile boolean active = true;

    public void stop() {
        active = false;
    }

    public void run() {
        while (active) {
            // выполняем работу
        }
    }
}

Здесь без volatile поток, выполняющий run(), может не увидеть изменение active в методе stop(). С volatile гарантируется, что цикл завершится, когда active станет false.