Using the Single-Model Interface will hurt your performance. I believe all waiting requests get queued. Synchronization would probably be a better idea, making sure you only synchronize what is indeed important. I know I've read about this. I couldn't find it in O'Reilly's servlet book, but I did come across this in the Core
Java Servlets and Java Server Pages:
page 154 near the bottom:
"Of, course the normal rules that require authors to synchronize multithreaded access to shared data still apply to servlets."
If I come across something else, I let you know.
- Sean