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

Как несколько потоков получают актуальное значение переменной, помеченной volatile

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

Пример:

java
public class VolatileExample {
    private volatile boolean flag = true;

    public void toggleFlag() {
        flag = !flag;
    }

    public void doWork() {
        while (flag) {
            // Работает, пока flag == true
        }
    }
}

Важные нюансы:

  1. volatile не заменяет синхронизацию, если нужны атомарные операции (например, инкремент)
  2. Чтение/запись volatile-переменной создает happens-before связь
  3. Подходит для простых флагов или состояний, где важна видимость изменений
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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