Are Java wait(), notify() 's implementation significantly different from locks?
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)? Other than being less cumbersome than using locks, are there other advantages of using wait() and notify()? [EDIT] I realized what I confused myself about after Brian's comments: 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