This week's book giveaway is in the OCMJEA forum. We're giving away four copies of OCM Java EE 6 Enterprise Architect Exam Guide and have Paul Allen & Joseph Bambara on-line! See this thread for details.
If a servlet implements SingleThreadModel, then that's a hint to the servlet container that this servlet is not threadsafe, and thus a servlet instance should not be used by multiple threads concurrently. Unfortunately that's not enough to make a web application thread-safe, so STM is deprecated, and should not be used.
The way to make a web app thread-safe is to program the servlets (and other code) in a thread-safe manner. That means (amongst other things) not sharing mutable state between threads, e.g. by using instance variables in servlets, or only doing so in synchronized blocks and methods.
Hi thanks for the reply. I was not specific about servlets being threadsafe. It was just that I am unable to understand the difference between calling a class as "singlethreadModel" or "threadsafe". Dont both the terms mean the same ?
Rgds [ October 08, 2007: Message edited by: Mike Anna ]
No. SingleThreadModel was a means to allow non-thread-safe servlets to run safely by confining them to a single thread. That's not in any way the same thing as being thread-safe; that is, safe to use across threads.
It's like saying that practicing safe driving habits, and hiding the keys to the car, are the same thing.
No. SingleThreadModel was a means to allow non-thread-safe servlets to run safely by confining them to a single thread. That's not in any way the same thing as being thread-safe; that is, safe to use across threads
ooohhkkk.. now I see. STM is just a marker interface, which would probably instantiate seperate instances of a servlet. However thread-safe really means like having a synchronised keyword around the method or code. right ?