1、HttpServlet默认是单实例多线程的
2、网上一直有人说实现SingleThreadModel接口就能实现单线程,由它的名字来看,确实很像,但却不是
3、实现SingleThreadModel接口只能实现多实例,servlet是无法实现单线程的(暂时没发现有什么办法实现,如有错误,欢迎交流指正)
为了验证上述的内容,我们来做个测试,代码如下:
public class DemoServlet extends HttpServlet implements SingleThreadModel{
private static final long serialVersionUID = 1L;
private String time = "first";//验证单实例
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//验证多线程
System.out.println("start--" + Thread.currentThread().getId() + ": " + new Date().getTime());
try {
Thread.sleep(20000); // 为了突出并发问题,在这设置一个延时
System.out.println(" end--" + Thread.currentThread().getId() + ": " + new Date().getTime());
} catch (InterruptedException e) {
}
System.out.println(" time--" + Thread.currentThread().getId() + ": " + time);
time = "second";
}
}
输出结果:
start--36: 1290678352796
start--35: 1290678354078
end--36: 1290678372796
time--36: first
end--35: 1290678374078
time--35: first
现在我们不实现接口SingleThreadModel,输出结果:
start--36: 1290678542750
start--35: 1290678543890
end--36: 1290678562750
time--36: first
end--35: 1290678563890
time--35: second
注意:只有在刚启动服务初始化时,结果才会如上;否则由于同初始化是同一个实例,所以2个time会显示second
从上面的结果不难看出:
1、不管实不实现接口SingleThreadModel,servlet都是多线程的
A、B 2个线程,线程ID永远不一样;B的开始时间不会在A的结束时间之后。
2、不实现接口SingleThreadModel,servlet是单实例的(B的time的结果因为A执行后变为second)
实现接口SingleThreadModel,servlet是多实例的(A、B的time都是first,证明A、B是2个不同的实例)
分享到:
相关推荐
HttpServlet 代码
httpservlet.jar包下载
httpservlet的jar包,修复httpservlet报错
HttpServlet 的Servlet的详解
httpservlet时序图的图解,详细描述了servlet的执行流程
基础入门的客户端开发txt,很适合初学者的android开发,HttpServlet
Java Web开发: 基于HttpServlet的用户登录网站 实例,参见博客:http://blog.csdn.net/yanzi1225627/article/details/8569950
HttpServlet完全自学手册,由浅入深.
提供tomcat的httpServlet解决http协议一些问题,有兴趣的可以了解一下
这是一个基于HttpServlet接口实现的简单登陆案例,所采用的环境是:IDEA_2019.2.3、MySQL_8.0.17和Tomcat_9.0.26,其中涉及到的内容有Druid数据库连池接技术,BeanUtils工具类等相关的JavaWeb技术,旨在加深对...
通过JAVA反射技术对HttpServlet进行简单封装,类似于struts框架,页面请求过来的参数名只需要与Action<T> T这个Bean里的变量对应即可,getForm()就是获得页面传过来的参数[注:当前这个只能传T里的string和int/...
tomcat+httpservlet+session+cookie+jsp+filter
本工程取自Linux系统下,使用eclipse 4.4构建的Tomcat7,web工程,能够后台显示log4j日志,具有文件下载、上传功能的Servlet,周末在家练习下J2EE的使用,适合学习用。
深入研究Servlet线程安全性问题...
apache-tomcat-7.0.67-src----这个是查看httpServlet源码的包必须导入这个包才能看源代码
2个方法 简单有图 傻瓜式 javax.servlet.http.HttpServlet无法构建问题解决方法
韩顺平.2011最新j2ee视频教程.细说servlet.第10讲.serlvet三种开发方式之(继承GenericServlet开发、继承HttpServlet开发).wmv
servlet.jar,httpservlet架包,servlet.jar,httpservlet架包
一、Servlet介绍 1、什么是Servlet Servlet(Server Applet),全称Java Servlet,Java服务器应用程序。是用Java编写的服务器端程 序。 其主要功能在于交互式地浏览和修改数据,生成动态Web内容。...
本篇文章小编为大家介绍,基于JSP HttpServlet的详细介绍,需要的朋友参考下