Что такое ключевое слово volatile

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

Ответ

volatile в Java указывает, что переменная может быть изменена из разных потоков. Оно гарантирует, что чтение/запись переменной будет происходить напрямую из основной памяти, а не из кэша потока, что обеспечивает видимость изменений между потоками.

Пример:

public class Example {
    private volatile boolean flag = false;

    public void toggleFlag() {
        flag = !flag; // Изменение видно всем потокам
    }
}

Важно: volatile не заменяет синхронизацию, если операции неатомарны (например, инкремент). Для сложных операций используйте synchronized или атомарные классы.