Junior — Middle
Kokia yra raktinio žodžio volatile vaidmuo Java ir kokiais atvejais jo naudojimas yra pateisinamas?
sobes.tech AI
Atsakymas iš AI
Ключевое слово volatile в Java используется для обозначения переменной, значение которой может изменяться в разных потоках. Оно гарантирует, что чтение и запись этой переменной будут происходить напрямую из основной памяти, а не из кэша процессора, что обеспечивает видимость изменений между потоками.
Использование volatile оправдано, когда:
- Нужно обеспечить видимость изменений переменной между потоками.
- Нет необходимости в атомарности сложных операций (например, инкремент не является атомарным).
Пример:
public class Flag {
private volatile boolean active = true;
public void stop() {
active = false;
}
public void run() {
while (active) {
// выполняем работу
}
}
}
Здесь volatile гарантирует, что когда один поток вызовет stop(), другой поток в методе run() увидит обновленное значение active и завершит цикл.