Last Updated: June 6, 2026
ReentrantLock is the standard concrete Lock implementation in java.util.concurrent.locks. It does everything synchronized does, plus three things synchronized cannot: it gives up if the lock isn't free in time, it lets a waiting thread be interrupted, and it lets you separate the "acquire" call from the "release" call so locking doesn't have to follow the shape of a method or block. This lesson is about the implementation you actually instantiate.