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

Нужно ли использовать synchronized с volatile

synchronized и volatile решают разные задачи, и их совместное использование не всегда необходимо, но иногда оправдано.

  • volatile гарантирует видимость изменений переменной для всех потоков, но не обеспечивает атомарность операций (например, i++).
  • synchronized обеспечивает и видимость, и атомарность, но дороже по производительности.

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

Пример:

java
private volatile boolean flag = false;

// Без synchronized возможна гонка потоков
public synchronized void toggleFlag() {
    flag = !flag;
}

Вывод:
volatile + synchronized нужно, если важна атомарность сложных операций над volatile-переменной. Для простых чтений/записей достаточно volatile.

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

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

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

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