💡 **Когда `ReentrantReadWriteLock` быстрее обычного `synchronized`** — 2 августа 2026 г. в 22:32:01.140
💡 **Когда `ReentrantReadWriteLock` быстрее обычного `synchronized`** Если приложение часто читает данные и редко их изменяет, один эксклюзивный lock может стать узким местом. `ReentrantReadWriteLock` разделяет блокировки: - несколько потоков могут одновременно держать `readLock`; - `writeLock` получает исключительный доступ; - во время записи блокируются и читатели, и другие писатели. ```java private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); private final Lock readLock = lock.readLock(); private final Lock writeLock = lock.writeLock(); public String get(String key) { readLock.lock(); try { return cache.get(key); } finally { readLock.unlock(); } } public void put(String key, String value) { writeLock.lock(); try { cache.put(key, value); } finally { writeLock.unlock(); } } ``` Такой подход полезен для кешей, справочников и конфигураций, которые постоянно читаются, но обновляются редко. Однако `ReentrantReadWriteLock` подходит не всегда. При коротких операциях, высокой конкуренции между писателями или частых обновлениях накладные расходы могут оказаться выше, чем у обычного `synchronized` или `ReentrantLock`. Используйте его для read-heavy сценариев и обязательно проверяйте результат под реальной нагрузкой.

