File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Servlets and the fly likes Thread safety in Servlets Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Murach's Java Servlets and JSP this week in the Servlets forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "Thread safety in Servlets" Watch "Thread safety in Servlets" New topic

Thread safety in Servlets

Manjusha Maddala

Joined: Oct 26, 2009
Posts: 2
Hi all,

Here's my understanding of handling thread safety wrt Servlets. The question follows..

For each client request, the Servlet container spawns a new thread which inturn calls the service() method of the Servlet. Lets say, the thread has a run() method within which there's a statement like: servlet.service(request, response); This is all taken care of by th servlet container. As a programmer, our job is to make sure the doGet()/doPost() are thread-safe.

Now, consider a general situation where we have a thread class, multiple instances of which are created in some other class. Lets say, under the run() method of this thread, there is a call to some library function in the Java API (similar to how the service() of Servlet gets called). In this case, how do we ensure that the Java API function is thread-safe? In general, is the Java API designed to handle thread safety?

I hope I made myself clear. Have I got something fundamentally wrong, or is this a valid question?

Ankit Garg

Joined: Aug 03, 2008
Posts: 9291

Hi Manjusha, welcome to javaranch.

Not all the java API classes are thread safe. Like StringBuilder is not thread safe but StringBuffer is, ArrayList is not thread safe but Vector is. So you'll have to ensure thread safety in such cases. But this only applies to a single instance of the API class. If I have one StringBuilder object which is access simultaneously by multiple servlets or multiple threads in the same servlet, then thread-safety is needed on the programmers end.


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
Leandro Coutinho
Ranch Hand

Joined: Mar 04, 2009
Posts: 417
To avoid thread problems in servlets, you can simply don't have instance variables, right?

YourServlet {
int x; // unpredictable results
Manjusha Maddala

Joined: Oct 26, 2009
Posts: 2
Thank you, Ankit and Leandro.
Leandro Coutinho
Ranch Hand

Joined: Mar 04, 2009
Posts: 417

I agree. Here's the link:
subject: Thread safety in Servlets
Similar Threads
Hello from the author: an introduction to the book
Multi Thread
few intrvw questions
Request Attributes are thread safe?