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

Почему нельзя использовать синхронизацию для счетчика при большом количестве потоков

Синхронизация через synchronized блок или метод создает contention (конкуренцию) при большом количестве потоков — потоки блокируются, ожидая монитора, что резко снижает производительность.

Лучшие альтернативы:

  1. AtomicLong/AtomicInteger — используют CAS (Compare-And-Swap) без блокировок.
    java
    private AtomicLong counter = new AtomicLong(0);
    counter.incrementAndGet();
  2. LongAdder (Java 8+) — разделяет счетчик на ячейки, уменьшая contention.
    java
    private LongAdder adder = new LongAdder();
    adder.increment();

Для высоконагруженных систем LongAdder работает быстрее, чем AtomicLong.

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

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

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

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