ReentrantLock — явная блокировка из java.util.concurrent.locks — более гибкая альтернатива synchronized. "Повторно входимый" (Reentrant) означает, что поток, удерживающий блокировку, может захватить её снова без взаимоблокировки. Ключевые преимущества: tryLock с таймаутом, прерываемое ожидание, честный режим и отдельные объекты Condition.
ReentrantLock vs synchronized