A thread cannot acquire a lock owned by another thread but a thread can acquire a lock that it already owns. Allowing a thread to acquire the same lock more than once enables reentrant synchronization.
This describes a situation where:
Without reentrant synchronization, synchronized code would have to take many additional precautions to avoid having a thread cause itself to block.
See also: javase/9/docs/api/java/util/concurrent/locks/ReentrantLock.html This implementation is a reentrant mutual exclusion Lock with the same basic behavior and semantics as the implicit monitor lock accessed using synchronized methods and statements, but with extended capabilities.