Sobes.tech
Назад к вопросам
Junior — Middle
63

В каких случаях следует использовать ключевое слово volatile в Java?

Компании, где спрашивали
Альфа-БанкАльфа-Банк

Ответ от нейросети

sobes.tech AI

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

Использовать volatile следует в случаях, когда:

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

Пример:

class Flag {
    private volatile boolean stop = false;

    public void requestStop() {
        stop = true;
    }

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

Здесь без volatile поток, выполняющий run(), может не увидеть изменение stop.