Don, I agree with you. When a threading is waiting, we cannot use holdsLock() to show that the thread is still holding the locks of other objects.
That is the reason I also gave you a link to the the upcoming revision of the JLS chapter 17. That link is more recent than the links provided here
JSR 133 We can only use holdsLock() to confirm what we already know, namely that a thread is actually holding two locks just before calling wait.
(The only usage of holdsLock() that I have seen documented is in the assertions guide.
Programming With Assertions, subsection Lock-Status Preconditions)
Here is how I might use holdsLock(). It doesn't prove anything.
[ January 07, 2004: Message edited by: Marlene Miller ]