Thread.sleep() does NOT release synchronized locks - the thread keeps holding all locks while sleeping. It remains alive (not terminated) and transitions back to runnable state after the sleep duration. Since the lock is held, other threads cannot enter the same synchronized block.