Sobes.tech
Back to questions
Junior — Middle
54

Объясните назначение и поведение ключевого слова volatile в языке Java.

Answer from AI

sobes.tech AI

В Java ключевое слово volatile используется для обозначения переменной, значение которой может изменяться несколькими потоками.

Назначение volatile:

  • Гарантирует, что чтение и запись переменной происходит напрямую из основной памяти, а не из кэша процессора.
  • Обеспечивает видимость изменений переменной между потоками — если один поток изменил значение, другие сразу увидят обновление.

Важно:

  • volatile не обеспечивает атомарность сложных операций (например, инкремент), только видимость.
  • Используется для флагов и простых состояний, где не нужна синхронизация блоками.

Пример:

class Example {
    private volatile boolean flag = false;

    public void setFlag() {
        flag = true; // изменение будет видно другим потокам сразу
    }

    public void checkFlag() {
        if (flag) {
            // выполнится, как только flag станет true
        }
    }
}