I'm sure I must be missing something. But if a thread does an await on a condition, then the lock is released. This is how it works in the Condition and waitset (so the object wait/notify system). So I don' understand why you are expecting 'lock.isLockedByCurrentThread' can be true.