Core concept

ReentrantLock lock = new ReentrantLock();
lock.lock();
try { /* critical */ } finally { lock.unlock(); }
Advertisement

How it works

Manual unlock in finally. Forget = deadlock.

Advertisement

Trade-offs + gotchas

Advanced locking needs. When synchronized insufficient.