General: MT is always difficult. Avoid if you can. In games, you can.
! That sounds very wrong to me. MT isn't difficult at all, really. And there's no reason to avoid it in general programming.
The situation with games dev is that you have specific reasons for wanting to avoid non-deterministic timing behaviours, and at the same time you derive no advantage from OS-provided multi threading because it's quite easy for you to write your own real-time thread scheduler that is at least as effective as the OS.
In a perfect world, all games would be MT IMHO. A couple of things would be needed though, including:
- an OS switch "please use an RT scheduler on my thread group"
- Sun fixing (ie preferably removing) their "innate" multi-threading.
The latter is a particular problem on windows, where the "secret" AWT threads not only screw up your programming but in games also make it extremely difficult to guarantee stuff happens at even approximately the right time.
I've seen people do MT in java whilst swearing blind they weren't, and without using the Thread or Runnable anywhere in source; they had inadvertently found out how to hijack the innate AWT thread, and were simultaneously using their main thread. It was fascinating, but also no surprise that they had lots of very weird bugs no-one could tell them how to fix.
If you had a really good OS (they do exist, but you can't generally buy them as consumer OS's) then you could go MT no problem. The reality of games programming today is that there are outstanding problems with the timing of threads especially in java (read Sun's API docs on threading - you will note they make statement like "this method offers no guarantees that anything will happen at any particular time or frequency").