Servlet和ThreadLocal的测试

xiaoxiao2026-08-09  4

作者:中国IT实验室 来源:中国IT实验室

  public class TestThreadServlet extends HttpServlet {      private static ThreadLocal thread    = new ThreadLocal();      private int         flag     = 0;      public void doGet( HttpServletRequest request,               HttpServletResponse response)          throws ServletException, IOException {        flag++;        String str = "This is the first String." + new Object();        if (thread.get() == null)          thread.set(str);        PrintWriter out = response.getWriter();        out.println("<p>");        out.println("<BR>flag : " + flag);        out.println("<BR>sessionid : " + request.getSession().getId());        out.println("<BR>servlet : " + this.toString());        out.println("<BR>thread : " + thread.get());        out.println("</p>");      }    }    执行结果:    Session 1:    flag : 2   sessionid : amGeaiVwKvL9   servlet : test.other.TestThreadServlet@5f2db0   thread : This is the first String.java.lang.Object@1ad6b4b    Session 1:    flag : 3   sessionid : aR3GkcUQoXT-   servlet : test.other.TestThreadServlet@5f2db0   thread : This is the first String.java.lang.Object@6214f5     由执行结果可以看出    1 服务器对每个Servlet只创建一个实例。flag不停增加    2 Session范围内的ThreadLocal中对象唯一。不同的请求,Object的hashCode相同。    3 不同的Session共享ThreadLocal,但内部对象不同    另:后来有人提醒我,实际上在web.xml为同一个servlet配置不同的名字,将会是两个不同的实例。也就是说,servlet的实例与配置有关。

 

相关资源:敏捷开发V1.0.pptx
转载请注明原文地址: https://www.6miu.com/read-5050934.html

最新回复(0)