title: Are Java wait(), notify() 's implementation significantly different from locks?
body: <p>Out of curiosity, when Java implements wait() and notify() methods, are they really just using locks? i.e., wait() acquires a mutex, notify() release a mutex, notifyAll() releases all mutexes (in the same object, of course)? </p>
  
  <p>Other than being less cumbersome than using locks, are there other advantages of using wait() and notify()? </p>
  
  <p>[EDIT] I realized what I confused myself about after Brian's comments: </p>
  
  <p>wait doesn't lock, it releases the lock and passes it to someone else who's waiting on a synchronized statement for the mutex, then waits to be notified by someone else who has the lock and calls notify, which passes the lock back to the original thread that called wait. I think that's where you're getting confused. – Brian 17 mins ago</p>