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

Что решает volatile

volatile гарантирует видимость изменений переменной для всех потоков. Без него изменения могут оставаться в кэше потока, и другие потоки их не увидят. Также запрещает переупорядочивание операций чтения/записи.

Пример:

java
class Shared {
    volatile boolean flag = false;
}

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

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

Но volatile не решает проблему атомарности составных операций (например, инкремента). Для этого нужны synchronized или атомики.

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

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

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

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