Hi Bill,
You know, it's fairly hard to know how much detail is 'enough' and how much is 'too much and confusing' when you write a book like this, so you pretty much end up winging it. But enough Apologia, here's your answer.
In general, when a synchronized method interacts with a memory structure, it gets a fresh copy of the structure, then holds the lock on that structure( if it's the locked resource). This prevents other Threads from modifying the locked structure, and guarantees that the synchronized method is 'seeing' the latest version of the data structure when it starts. You need this process to make sure that the structures being used are current. By synchronizing the methods on the data class, you are guaranteeing that they are, in fact, seeing the latest state of any structure they are working with when they start.
You can read more about it
here All best,
M
[ September 15, 2003: Message edited by: Max Habibi ]