This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
When a thread is waiting as a result of wait(), it releases all the locks it holds. while option c above contradicts it.
Obviously, this statement is untrue, as it will make the wait() method pretty dangerous to use -- free locks used by Swing, JDBC, etc.
However, the book may be referring to something else. A thread is allowed to acquire a lock that it already owns. This is needed for a synchronized method to call another synchronized method of the same instance. The wait() method will release the lock completely, meaning all the times it acquired it.
The test I was doing from the CD comes with the K&B book so was wondering as my concept was not going side by side. If you have an access to CD then please check what I had mentioned in the Master exam.