struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From fzli...@omnytex.com
Subject Re: general Thread disscussion
Date Tue, 01 Feb 2005 18:14:42 GMT
These seems to come up a lot, I've personally been involved in this discussion a number of
times over the past two months.  Someone should probably write a Wiki entry somewhere (assuming
one doesn't exist already).

The discussion generally it seems comes to this conclusion:

We've all heard that "spawning threads in a servlet container is a no-no", and it may even
be forbidden by J2EE, but... doing it is OK if you are careful and COMFORTABLE with thread
programming.  It is VERY easy to get yourself in trouble, so if you don't really know what
your doing, find another solution.  If you DO know what your doing though, proceed with caution,
but proceed none the less.  Specific points: you usually will want a daemon thread for period
tasks (non-daemon threads can cause a container to not be able to shut down properly) and
you generally want to set the thread priority as low as you can.  Also, you NEVER want to
hold references to any request-oriented resources (in fact, your thread shouldn't even USE
them, shouldn't even be aware that it's running in a servlet container, if possible).  Also,
be VERY wary of spawning threads to handle requests.  Some people do this and it works out
well (i.e., for some long-running process that the UI is going to poll for later), but it's
a dangerous road.

At least, that's my recollection of the usual outcome of the discussion.

I have an application where I spawn four threads at startup, one for initialization tasks
that dies shortly after startup, and three that run for the life of the app to do periodic
tasks.  The only trouble I've ever had was when I didn't create them as daemon threads, then
Tomcat wouldn't shut down.  Making them damons solved that problem.  Otherwise, this app has
been in production for over a year with a respectable load, and there has been no ill effect.
 I was careful when I wrote them, thought pessimistacally about what could be happening at
any given point in time, and it has worked out well.

Just be careful! :)

-- 
Frank W. Zammetti
Founder and Chief Software Architect
Omnytex Technologies
http://www.omnytex.com

On Tue, February 1, 2005 12:56 pm, listed@gmx.net said:
> I had yesterday a general discussion about Threads running in the
> Servlet-Engine Tomcat.
> 
> What i would like to do is to start a Thread over the Struts-Plugin. The
> Thread self is running in a infinite
> <http://dict.leo.org/se?lp=ende&p=/Mn4k.&search=infinite> loop
> <http://dict.leo.org/se?lp=ende&p=/Mn4k.&search=loop> to do something
> and to sleep for 30sec.
> 
> Does anyone have expiriences with this?
> I think it shoudn't be a problem when i start the Thread and terminate
> it when the Application is terminating. But i heard that isn't a best
> practise to run a thread in Tomcat. But i don't know where...
> 
> Greets
> Felix Klieber
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
> 
> 


Mime
View raw message