Sobes.tech
Назад к вопросам
Senior
8

Что такое volatile?

Компании, где спрашивали
Octo

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

sobes.tech AI

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

Это значит, что если один поток изменил значение volatile-переменной, другие потоки сразу увидят это новое значение.

Пример:

public class Example {
    private volatile boolean flag = false;

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

    public void reader() {
        if (flag) {
            // гарантированно увидит обновленное значение flag
        }
    }
}

Важно понимать, что volatile не обеспечивает атомарность операций, а только видимость изменений. Для сложных операций синхронизация или другие механизмы concurrency control необходимы.