Servlet是单实例,多线程的吗?
2013-11-17 23:11
176 查看
web 应用中 Servlet 只实例化一次,支持多线程是因为其service()方法可以被多次调用。
servlet 的生命周期为:
(1)实例化
默认情况下,servlet在web容器初始化时实例化,调用其init()方法
修改其初始化参数,使其在请求到来的时候实例化:此时,会先检查容器中是否存在servlet实例,如果没有,就实例化一个出来;如果有就使用这个实例
(2)调用doXXX()方法
根据表单的method=post/get ,调用其doPost()/doGet()方法,处理请求和相应数据
(3)销毁
当web容器准备销毁servlet实例时,调用其destory()方法
当有不同的用户对同一个web应用发出请求时,每一个用户都会创建一个servlet实例,但是web容器在维护时,只允许有一个servlet实例存l在JVM中。
我自己理解就是:其实,每一个用户都有对应的servlet实例,但是在使用web应用时,某一个时刻只允许一个servlet实例起作用!
而对于同一个用户,就只有一个servlet实例,并且采取多线程的方式运行其service()方法,处理多请求。
Servlet并不是单例,只是容器让它只实例化一次,变现出来的是单例的效果而已。
Servlet是web容器来控制实例化的,并不是你自己用你编写的代码来实例化,即使你自己编写代码实例化你的servlet,Web服务器也不会直接调用你的实例化的Servlet对象的。
servlet 的生命周期为:
(1)实例化
默认情况下,servlet在web容器初始化时实例化,调用其init()方法
修改其初始化参数,使其在请求到来的时候实例化:此时,会先检查容器中是否存在servlet实例,如果没有,就实例化一个出来;如果有就使用这个实例
(2)调用doXXX()方法
根据表单的method=post/get ,调用其doPost()/doGet()方法,处理请求和相应数据
(3)销毁
当web容器准备销毁servlet实例时,调用其destory()方法
当有不同的用户对同一个web应用发出请求时,每一个用户都会创建一个servlet实例,但是web容器在维护时,只允许有一个servlet实例存l在JVM中。
我自己理解就是:其实,每一个用户都有对应的servlet实例,但是在使用web应用时,某一个时刻只允许一个servlet实例起作用!
而对于同一个用户,就只有一个servlet实例,并且采取多线程的方式运行其service()方法,处理多请求。
Servlet并不是单例,只是容器让它只实例化一次,变现出来的是单例的效果而已。
Servlet是web容器来控制实例化的,并不是你自己用你编写的代码来实例化,即使你自己编写代码实例化你的servlet,Web服务器也不会直接调用你的实例化的Servlet对象的。
相关文章推荐
- JAVA EE 之 servlet单实例多线程模式
- 怎样理解Servlet的单实例多线程
- 【转】多用户访问Servlet,servlet单实例多线程
- 理解servlet的单实例多线程
- Servlet单实例多线程模式
- Servlet 3.0 新特性详解(servlet是单实例多线程的,线程池数量有限)
- 怎样理解Servlet的单实例多线程
- servlet单实例多线程时的线程安全
- JSP —— Servlet 单实例多线程模式
- servlet单实例多线程模式
- servlet单实例多线程简述
- 怎样理解Servlet的单实例多线程
- servlet的实例变量是线程不安全的,而其JSP也默认是以多线程方式执行
- servlet单实例多线程
- 怎样理解Servlet的单实例多线程
- servlet多线程的根本原因在于服务器端servlet是单实例的。
- servlet单实例多线程模式
- servlet的实例变量是线程不安全的,而其JSP也默认是以多线程方式执行(原创)
- servlet单实例多线程
- servlet单实例多线程模式