• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

which part of the servlet runs in new threads

 
Ranch Hand
Posts: 32
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hi all,

in Head First servlets and jsp book it was given like this .A seperate thread is created on every request, and before service() method called a seperate thread is created and control is transferred to service() method().

Does this mean remaining parts of servlet are shared by multiple threads
simultaniously ?

If I declare a HashMap in a servlet class as an instance variable then will it be shared by multiple threads .

I refer this HashMap in doPost()


eg





please tell in the above example if the HashMap h is shared by multiple threads .Is this the proper place to declare a HashMap in a servlet.



my application requirement after upload keep track of all uploaded file in a HashMap .So that when a user tries to delete using a link in the html page servlet shud delete that file only in the file system.
[ December 16, 2008: Message edited by: vijaya saradhi ]
 
Sheriff
Posts: 9708
43
Android Google Web Toolkit Hibernate IntelliJ IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
you are right that the HashMap will be shared by multiple threads. I don't think you can face problems with the specification of your code. But I am thinking about a case where two files with the same name are uploaded at the same time. There might be some more cases which I am not able to figure out . So for safety, I think you must synchronize the doPost method.
 
Rancher
Posts: 43081
77
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Instance variables are shared by all threads. Since that HashMap is mutable (there's a "put" method), this code is not thread-safe. You need to synchronize access to it.

The doGet and doPost methods are called from the service method, so both can be run by multiple threads/requests simultaneously.
[ December 17, 2008: Message edited by: Ulf Dittmer ]
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic