Sobes.tech
Junior — Middle

Explique a finalidade e as características do uso da palavra-chave volatile na programação.

sobes.tech IA

Resposta da IA

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

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

Однако volatile не обеспечивает атомарность операций (например, count++ не является атомарным даже если count volatile).

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

public class Counter {
    private volatile int count = 0;

    public void increment() {
        count++; // не атомарно, volatile не решит проблему
    }

    public int getCount() {
        return count; // всегда актуальное значение
    }
}

volatile полезен для флагов состояния, например, чтобы один поток мог остановить другой:

private volatile boolean running = true;

public void run() {
    while (running) {
        // работа
    }
}

public void stop() {
    running = false; // гарантированно увидят другие потоки
}