Middle
190
Que se passe-t-il si on applique le mot-clé volatile à une variable en Java?
Réponse de l'IA
sobes.tech IA
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; // Изменение флага, видимое другим потоком
}