A deadlock in all simplicity is when 2 threads are waiting for each other. Or rather 2 threads hold one resource each and are waiting for the resource that the other thread is holding. Now, since wait() does release the monitor when called, it allows the other thread to acquire that monitor. If that other thread is then able to finish ...