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

В чем разница между synchronized и volatile

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

Пример с volatile:

java
private volatile boolean flag = true;

// Поток 1
flag = false;

// Поток 2 сразу увидит изменение flag

Пример с synchronized:

java
private int counter = 0;

public synchronized void increment() {
    counter++; // атомарная операция
}

Ключевые различия:

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

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

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

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