In a nut shell, if a servlet implements Single Thread Model, the container will provide a new copy of it for each request. It was deprecated because its name gave the false impression that implementing it guaranteed thread safety.
Originally posted by sudhir nim: If a servlet is implementing SingleThreadModel thn container will synchronize access to service()
No, this is one way in which it can be implemented.
From the API:
The servlet container can make this guarantee by synchronizing access to a single instance of the servlet, or by maintaining a pool of servlet instances and dispatching each new request to a free servlet.