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.