Что такое volatile в Android

«Что такое volatile в Android» — вопрос из категории Многопоточность, который задают на 26% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

volatile — это ключевое слово в Java, которое гарантирует видимость изменений переменной для всех потоков. В Android оно используется для работы с многопоточностью, когда переменная может изменяться из разных потоков, но не требует атомарности операций.

Особенности:

  • Гарантирует, что чтение переменной всегда возвращает последнее записанное значение (избегает кеширования в регистрах процессора).
  • Не обеспечивает атомарность сложных операций (например, i++). Для этого нужны synchronized, Atomic-классы или другие механизмы.

Пример:

private volatile boolean isRunning = true;

void startWork() {
    new Thread(() -> {
        while (isRunning) { // Чтение всегда актуального значения
            // Работа в фоне
        }
    }).start();
}

void stopWork() {
    isRunning = false; // Запись видна всем потокам
}