Hi, Basically servlets are multithreaded by design. Meaning single object instance of servlet will serve all the clients. In a specific scenario, when you expect concurrency will affect the integrity of data, you can go for single threaded servlet by implementing Single Thread Model interface. Hope this answers your question. Cheers Murthy
Yes, single thread model criples performance as the servlet has to complete servicing a request before servicing another one (it can't service more than one request at a time). However, this does not mean that only one servlet will be loaded. The most common behavior is for the servlet container to instantiate more than one instance of the servlet each for servicing a particular request. This kills performance as every instance has to be initialized and then destroyed for every request without counting the effect of many instances loaded in memory. If you have thousands of such instances, your server will take a hit. Synchronization will still be an issue if those instances have to access common external (external to the servlet) resources. [ February 05, 2004: Message edited by: Brahim Bakayoko ]
SCJP, SCWCD, SCBCD, IBM CSD WebSphere v5, <br />A+, MCP 2000 and 2000 server, CST, and few incompleted certification tracks.<br /> <br />Ivory Coast<br /> <br />Analyze your web Request/Response @ <a href="http://webtools.servehttp.com" target="_blank" rel="nofollow">http://webtools.servehttp.com</a> down for a while...
Single Thread Model degrade the servlet performance dramatically, it is just a reference Model for Multithreaded Model. In reality, it is not much of use. Pay attention to the following synchronization issues when you write a multithreaded servlet service: a. access servlet instance variables b. access session shared data c. access application shared data
I agree. Here's the link: http://ej-technologies/jprofiler - if it wasn't for jprofiler, we would need to
run our stuff on 16 servers instead of 3.