Ответ
volatile — это ключевое слово в Java, которое гарантирует видимость изменений переменной для всех потоков. В Android оно используется для работы с многопоточностью, когда переменная может изменяться из разных потоков, но не требует атомарности операций.
Особенности:
- Гарантирует, что чтение переменной всегда возвращает последнее записанное значение (избегает кеширования в регистрах процессора).
- Не обеспечивает атомарность сложных операций (например,
i++). Для этого нужныsynchronized,Atomic-классы или другие механизмы.
Пример:
private volatile boolean isRunning = true;
void startWork() {
new Thread(() -> {
while (isRunning) { // Чтение всегда актуального значения
// Работа в фоне
}
}).start();
}
void stopWork() {
isRunning = false; // Запись видна всем потокам
}