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

Будет ли переменная общей, если не помечать ее volatile

Если переменная не помечена как volatile, она не гарантирует видимость изменений между потоками. Без volatile или других механизмов синхронизации (например, synchronized, Atomic-классы), изменения переменной в одном потоке могут быть не видны другим потокам из-за оптимизаций JVM (кеширование в регистрах/локальной памяти потока).

Пример:

java
class Example {
    boolean flag = false; // без volatile

    void writer() {
        flag = true;
    }

    void reader() {
        while (!flag); // может зациклиться
        System.out.println("Flag is true");
    }
}

Здесь reader() может никогда не завершиться, так как изменение flag из writer() не обязательно будет видно. Добавление volatile решает проблему.

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

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

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

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