Also, Question: I know that having a separate animation thread is important so the animation will be clean (or whatever word one uses to describe it), but does having more than one thread for animation provide any extra benefit?
Unless you're animating a whole lot of stuff and have a whole lot of processor cores, it probably won't do any good to have more than one thread for the animation.
What might be useful is creating separate threads to do different things. For instance, I have a main update thread (including animation), the AWT Event Thread, music in one thread, and sound effects in one thread each (so they can play at the same time). Additionally, I do some initialization in separate threads and load a particular large background image that changes for different levels in a separate thread.
I would assume that multiple animation threads would benefit a multi-core processor, that could run more than one instruction set simultaneously, but I'm thinking that possible synchronization issues would make a single core processor even slower. What do you think?
In general, using Ncpu + 1 threads, where Ncpu is the number of processor cores you have, is supposed to be optimal. I don't know where the "+ 1" comes from, but it seems obvious that having alot more threads than processor cores isn't going to do any good.
And, yes, synchronization slows things down. One way to reduce the problem is to use final or volatile variables where possible. That's a relatively complicated topic, which I just bought an ebook called Java Concurrency in Practice for. (It's available on Mobipocket for $30+.)