Назад к вопросам
СБЕР
СБЕР Pay
МТС
Альфа-Банк
БАРС групп
Яндекс
OZON
IT One
ОТП Банк
Junior — Middle
76
Объясните назначение и особенности использования ключевого слова volatile в программировании.
Компании, где спрашивали
Prooftech
Акселератор возможностей
ylab
Firecode
Ответ от нейросети
sobes.tech AI
В Java ключевое слово volatile используется для обозначения переменной, значение которой может изменяться несколькими потоками. Оно гарантирует:
- Видимость изменений: когда один поток изменяет значение volatile-переменной, другие потоки сразу увидят это изменение.
- Запрет оптимизаций компилятора и процессора: чтение и запись volatile-переменной не кэшируются в регистрах или локальных кэшах, а всегда происходят из основной памяти.
Однако volatile не обеспечивает атомарность операций (например, count++ не является атомарным даже если count volatile).
Пример использования:
public class Counter {
private volatile int count = 0;
public void increment() {
count++; // не атомарно, volatile не решит проблему
}
public int getCount() {
return count; // всегда актуальное значение
}
}
volatile полезен для флагов состояния, например, чтобы один поток мог остановить другой:
private volatile boolean running = true;
public void run() {
while (running) {
// работа
}
}
public void stop() {
running = false; // гарантированно увидят другие потоки
}