`synchronized` używa wbudowanych monitorów i automatycznie zwalnia blokadę. `ReentrantLock` to jawny lock z funkcjami typu `tryLock`, polityką fairness i możliwością przerwania oczekiwania — ale musisz go zwolnić w `finally`. Oba są reentrant.