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.