Встречается на собеседованиях • сегодня

Как ключевое слово volatile помогает при многопоточности

Ключевое слово volatile гарантирует видимость изменений переменной для всех потоков. Оно предотвращает кэширование переменной в регистрах процессора, обеспечивая чтение из основной памяти.

Основные эффекты:

  1. Видимость - изменения, сделанные одним потоком, сразу видны другим
  2. Запрет переупорядочивания - компилятор и процессор не могут переставлять операции с volatile-переменными

Пример:

java
class Shared {
    volatile boolean flag = false;
}

// Поток 1
shared.flag = true; // изменение сразу видно другим потокам

// Поток 2
while(!shared.flag) { // всегда читает актуальное значение
    // ждем
}

Ограничения:

  • Не обеспечивает атомарность составных операций (например, инкремент)
  • Не заменяет synchronized для сложных операций

Используется для простых флагов или состояний, где важна своевременная видимость изменений.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы