Single Thread Model ensures that servlet handles only one
request at a time.When YOUR CLASS IMPLEMENTS THIS INTERFACE
WE ARE GUARENTEED THAT no two threads run simultaneously in
service() method.
this is a marker interface which contains no methods on its
own.
Hi... Actually "SingleThreadedModel" is a marker
interface,which doesnot contain any methods.By default
servlet is multithreaded.If u want to make this as single
theaded u can implement this interface in the following
fashion.
public class SingleThreadedTest implements SingleThreadModel
{
//some code
//....
//....
//....
}It is Thread-safety mechanism on a shared resource.
SingleThreadModel is a taged interface i.e. an interface
with out methods.
If any servlet is implimenting singlethreadmodel interface
that servlet is said be thread safe i.e. for each request
to that servlet one new object will be created in the server
But see when a servlet implements singleThreadModel, as the
singleThreadModel is marker how come the servlet comes to
know that servlet is threadsafe?...
Typically, a servlet class is instantiated the first time
it is invoked. The same instance will be used over several
client requests, so all members that are declared in that
servlet are shared accross clients. That is what is meant
by multi threaded model, multiple clients that access the
same instance.
There are situations where you want to protect your servlet
member variables from being modified by different clients.
In this case, you can have your servlet implement the
marker interface SingleThreadModel. Every time a client
makes a request to a servlet that implements this
interface, the engine will create a new instance of the
servlet. For performance reasons, the engine can also
maintain a instance pool, handing out instances as they are
needed. Or it could also serialize client requests,
executing a single request.
Single thread model is generally not used because it
increases the burden and overhead on the container because
it has to make new instance of the servlet for each and and
every new request.
Sometimes we need to achive the Single thread model in
order to secure our web-application.
SingleThreadModel is a marker interface. It is used to ensure that servlet handle only one request at a time.
Servlets can implement SingleThreadModel interface to inform the container that it should make sure that only one thread is executing the servlet’s service() method at any given moment.
In Single Thread model multiple instances of Servlet class
is Created for every request and in MultiThread model thread
instance is created for every request.
Single thread model is used in case code safety.Performance
fo server is degraded when we use single thread as it
creates Servlet instance for every request where server
gives fast response in multi thread model.