Назад к вопросам
Senior
8
Что такое volatile переменная и для чего она нужна?
Компании, где спрашивали
Velenes.Tech
Ответ от нейросети
sobes.tech AI
В Java ключевое слово volatile используется для обозначения переменной, значение которой может изменяться в разных потоках. Оно гарантирует, что чтение и запись этой переменной будут происходить напрямую из основной памяти, а не из локального кэша процессора, что обеспечивает видимость изменений между потоками.
Основные особенности volatile:
- Обеспечивает видимость изменений переменной для всех потоков
- Запрещает переупорядочивание операций чтения/записи с этой переменной компилятором и процессором
- Не гарантирует атомарность сложных операций (например, инкремент)
Пример использования:
public class Example {
private volatile boolean flag = false;
public void setFlag() {
flag = true; // изменение будет сразу видно другим потокам
}
public void waitForFlag() {
while (!flag) {
// ждем, пока flag не станет true
}
// продолжить работу
}
}
Здесь без volatile поток, выполняющий waitForFlag, может никогда не увидеть изменение flag, так как значение может быть закэшировано локально.