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

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

Проблема часто возникает из-за блокировок в synchronized методах/блоках. Оптимизации:

  1. Уменьшаем гранулярность блокировок:
java
private final Object lock1 = new Object();
private final Object lock2 = new Object();

public void method1() {
    synchronized(lock1) { /* ... */ }
}

public void method2() {
synchronized(lock2) { /* ... */ }
}

text

2. Используем Concurrent коллекции вместо synchronized:
```java
Map<String, String> map = new ConcurrentHashMap<>();
  1. Рассматриваем ReadWriteLock для read-heavy кейсов:
java
ReadWriteLock rwLock = new ReentrantReadWriteLock();

void read() {
    rwLock.readLock().lock();
    try { /* ... */ } 
    finally { rwLock.readLock().unlock(); }
}
  1. Для атомарных операций - Atomic классы (AtomicInteger и т.д.)

  2. В Java 8+ - StampedLock с оптимистичным чтением

Важно: профилируйте код перед оптимизацией, чтобы найти реальные узкие места!

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

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

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

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