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

Достаточно ли сделать счетчик volatile для инкрементации из разных потоков

Нет, volatile не гарантирует атомарность операций инкремента. volatile обеспечивает видимость изменений между потоками, но операция i++ — это read-modify-write, которая не атомарна.

Для потокобезопасного инкремента используй:

  1. AtomicInteger (лучший вариант)
  2. synchronized блок
  3. ReentrantLock

Пример с AtomicInteger:

java
AtomicInteger counter = new AtomicInteger(0);
counter.incrementAndGet(); // атомарный инкремент

Пример с synchronized:

java
private int counter = 0;

public synchronized void increment() {
    counter++;
}

volatile подходит только для одиночных операций записи/чтения.

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

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

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

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