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

Что такое volatile в Java?

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

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

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
            System.out.println("Flag is true");
        }
    }
}