About
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:
- synchronized code, directly or indirectly, invokes a method that also contains synchronized code,
- and both sets of code use the same lock.
Without reentrant synchronization, synchronized code would have to take many additional precautions to avoid having a thread cause itself to block.
Articles Related
ReentrantLock
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.