ReentrantLock — реализация Lock, которую можно захватить повторно тем же потоком (reentrant — как и synchronized). Создаёшь new ReentrantLock(true) — fair, потоки обслуживаются в порядке ожидания. lock() — захват, unlock() — освобождение (всегда в finally!). tryLock() — неблокирующая попытка, удобна для избежания deadlock. getHoldCount() — сколько раз захвачен. isLocked(), getQueueLength() — для мониторинга. Condition заменяет wait/notify — можно иметь несколько условий на одном локе.
Как работает ReentrantLock?
Middle
290 просмотровAFK Offer AI
Что такое backpressure в реактивном программировании?