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

Связано ли ключевое слово volatile с Happens-before

Да, связано. volatile гарантирует happens-before между записью в volatile-поле в одном потоке и последующим чтением этого же поля в другом потоке. Это означает, что все изменения, сделанные до записи в volatile-переменную, будут видны после чтения этой переменной в другом потоке.

Пример:

java
class Example {
    volatile boolean flag = false;
    int value = 0;

    void writer() {
        value = 42; // гарантированно видно в reader()
        flag = true; // happens-before запись
    }

    void reader() {
        if (flag) { // happens-before чтение
            System.out.println(value); // гарантированно увидит 42
        }
    }
}

Без volatile нет гарантии, что поток reader() увидит изменения value.

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

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

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

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