Назад к вопросам
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");
}
}
}