Sobes.tech
Back to questions
Senior
10

Что такое volatile?

Companies where asked
Octo

Answer from AI

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 необходимы.