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.
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 ]