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

Может ли возникнуть ошибка при одновременной модификации volatile счетчика из разных потоков

Да, может возникнуть race condition, несмотря на volatile. Volatile гарантирует видимость изменений между потоками, но не атомарность операций. Например, операция инкремента (counter++) состоит из чтения, изменения и записи - это неатомарная операция.

Пример:

java
private volatile int counter = 0;

// В разных потоках:
counter++; // Небезопасно!

Для атомарных операций нужно использовать AtomicInteger или synchronized:

java
private AtomicInteger counter = new AtomicInteger(0);

// Потокобезопасно:
counter.incrementAndGet();

Или с synchronized:

java
private int counter = 0;

public synchronized void increment() {
    counter++;
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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