Что такое Volatile

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

Ответ

volatile в Java (и Kotlin) — это модификатор переменной, который гарантирует, что её значение всегда будет читаться из основной памяти, а не из кеша потока. Это обеспечивает видимость изменений переменной для всех потоков.

Когда использовать:

  • Когда переменная может изменяться разными потоками, и вам нужна гарантия, что каждый поток увидит актуальное значение.
  • Часто применяется для флагов или простых состояний, где атомарность операций не критична (для сложных сценариев лучше использовать Atomic классы или синхронизацию).

Пример:

@Volatile
var isRunning = false

fun start() {
    Thread {
        while (isRunning) { // Чтение из основной памяти
            // Работа в потоке
        }
    }.start()
}

⚠️ volatile не делает операции атомарными! Например, count++ всё равно потребует синхронизации.