Thanks for the hint!
In output 2, Thread-B has finished and is dead before main thread has started. But, unfortunately, main-thread is still in hopes that Thread-B will run and is waiting for the lock that it has given up.
Well, now comes an interesting question:
How do we get the lock that we've given up earlier intentionally? Let's say, no one is there for us to notify.
[ April 15, 2007: Message edited by: Faisal Pasha ]