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.
The explanation given as, "Notice in line 6 the code synchronizes itself with the object b- this is because in order to call wait() on the object. ThreadA must own a lock on b. For a thread to call wait() or notify(), the thread has to be the owner of the lock for that object.
So from my understanding, at line 6 which is in ThreadA, when we say synchronized(b), it means that ThreadA has locked ThreadB. Is that what I can infer?? This may sound dumb and stupid, but ranchers, please help me understand this.
Thanks in advance.
SCJP 1.4, SCWCD 1.4 - Hints for you, Certified Scrum Master
Did a rm -R / to find out that I lost my entire Linux installation!
Yes, you are correct. When you say synchronized(b) you are locking onto the instance of ThreadB (not the class itself). So while your thread is in that synchronized block, no other thread can access synchronized methods of that b instance, however, they still can run un-synhronized methods of that class.
Jothi, did you forget something in that ThreadB class? You can't just call notify like that. You are going to get an IllegalMonitorStateException in thread B. [ December 16, 2006: Message edited by: Barry Gaunt ]