Ответ
volatile в Java (и Kotlin) — это модификатор переменной, который гарантирует, что её значение всегда будет читаться из основной памяти, а не из кеша потока. Это обеспечивает видимость изменений переменной для всех потоков.
Когда использовать:
- Когда переменная может изменяться разными потоками, и вам нужна гарантия, что каждый поток увидит актуальное значение.
- Часто применяется для флагов или простых состояний, где атомарность операций не критична (для сложных сценариев лучше использовать
Atomicклассы или синхронизацию).
Пример:
@Volatile
var isRunning = false
fun start() {
Thread {
while (isRunning) { // Чтение из основной памяти
// Работа в потоке
}
}.start()
}
⚠️ volatile не делает операции атомарными! Например, count++ всё равно потребует синхронизации.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶