Sobes.tech
Junior — Middle

U kojim slučajevima treba koristiti ključnu reč volatile u Javi?

sobes.tech АИ

Одговор од АИ

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

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

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

Пример:

class Flag {
    private volatile boolean stop = false;

    public void requestStop() {
        stop = true;
    }

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

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