Назад к вопросам
Middle
75
questionbank
Что произойдет, если применить ключевое слово volatile к переменной в Java?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
volatile гарантирует видимость обновлений переменной всеми потоками.
Применение volatile к переменной:
- Гарантирует видимость: Запись в
volatileпеременную одним потоком становится видимой для всех других потоков, которые впоследствии читают эту переменную. - Запрещает переупорядочивание: JVM и процессоры могут переупорядочивать инструкции для оптимизации производительности.
volatileзапрещает переупорядочивание записи вvolatileпеременную с последующими доступами к другим переменным, а чтения изvolatileпеременной с предыдущими доступами к другим переменным. - Не гарантирует атомарность:
volatileобеспечивает видимость, но не гарантирует, что составные операции (например, инкрементi++, который состоит из чтения, модификации и записи) будут атомарными. Для атомарных операций на примитивных типах часто используются классы из пакетаjava.util.concurrent.atomic.
Пример использования:
// Переменная для флага остановки потока
private volatile boolean stopped = false;
public void run() {
while (!stopped) {
// Выполнение работы
}
}
public void stop() {
stopped = true; // Изменение флага, видимое другим потоком
}