servlet单例多线程一

servlet单例多线程一


此文以实际测试案例来说明servlet的单例多线程工作模式。

测试环境:Tomcat 6.x、JDK 1.7、Eclipse 4.5.2、windows10、chrome50.x

代码如下:

HelloServlet.java

package me.qxl.tomcat.servlet;

import java.io.IOException;
import java.io.Writer;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/** 
 *
 * @author qxl
 * @date 2016年12月1日 下午3:04:17 
 * @version 1.0.0
 */
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	String msg = null;
	
	@Override
	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		Writer writer = response.getWriter();
		
		msg = request.getParameter("a");
		writer.write("The currect thread is :"+Thread.currentThread()+"<br/>");
		System.out.println("before thread.sleep the msg is :"+msg);
		writer.write("before thread.sleep the msg is :"+msg+"<br/>");
		
		try {
			Thread.sleep(10000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		writer.write("after thread.sleep the msg is :"+msg);
		writer.flush();
		writer.close();
	}

}
web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>testTomcat</display-name>
  
  <servlet>
  	<servlet-name>hello</servlet-name>
  	<servlet-class>me.qxl.tomcat.servlet.HelloServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>hello</servlet-name>
  	<url-pattern>/hello</url-pattern>
  </servlet-mapping>
  
</web-app>

测试结果:

两个请求访问/hello时


由此结果可以看出,HelloServlet.java实例只被创建了一次。

具体原因及原理见 servlet单例多线程二






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值