Встречается на 2% собеседований по Java

Какие блокировки лучше по производительности

Оптимизация блокировок зависит от контекста. Основные варианты:

  1. Оптимистичные блокировки (через Atomic или version поля) - лучше для read-heavy сценариев, минимизируют contention:
java
AtomicInteger counter = new AtomicInteger();
counter.compareAndSet(expectedValue, newValue);
  1. Fine-grained блокировки (разделение на несколько локов) - уменьшают contention:
java
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
  1. ReadWriteLock - позволяет множественные чтения при эксклюзивной записи:
java
ReadWriteLock rwLock = new ReentrantReadWriteLock();
rwLock.readLock().lock();
// read operations
rwLock.readLock().unlock();
  1. StampedLock (Java 8+) - оптимизированная альтернатива ReadWriteLock с поддержкой optimistic reads:
java
StampedLock lock = new StampedLock();
long stamp = lock.tryOptimisticRead();
// validate stamp

Для максимальной производительности в высоконагруженных системах лучше использовать lock-free структуры (ConcurrentHashMap, CopyOnWriteArrayList) или вообще избегать блокировок через immutable объекты и actor-модели.

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

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

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

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