`
冰云
  • 浏览: 141378 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

Servlet和ThreadLocal的测试

阅读更多

Servlet和ThreadLocal的测试

很早以前就对Servlet中的变量生命周期不清楚

最近用hibernate又涉及到ThreadLocal的使用

做个测试看看到底它们的变量有效范围

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中对象唯一。不同的请求,ObjecthashCode相同。

3 不同的Session共享ThreadLocal,但内部对象不同

另:后来有人提醒我,实际上在web.xml为同一个servlet配置不同的名字,将会是两个不同的实例。也就是说,servlet的实例与配置有关。

    


版权声明:
本文由冰云完成,作者保留中文版权。
未经许可,不得使用于任何商业用途。
欢迎转载,但请保持文章及版权声明完整。
如需联络请发邮件:icecloud(AT)sina.com
Blog:http://icecloud.51.net
 



评论

相关推荐

    Spring.3.x企业应用开发实战(完整版).part2

    16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要...

    Spring3.x企业应用开发实战(完整版) part1

    16.7.2 使用Spring Servlet API模拟对象 16.7.3 使用Spring RestTemplate测试 16.7.4 使用Selenium测试 16.8 小结 第17章 实战案例开发 17.1 论坛案例概述 17.1.1 论坛整体功能结构 17.1.2 论坛用例描述 17.1.3 主要...

    Java并发编程(学习笔记).xmind

    Servlet和JSP Servlet本身要是线程安全的 正确协同一个Servlet访问多个Servlet共享的信息 远程方法调用(RMI) 正确协同多个对象中的共享状态 正确协同远程对象本身状态的访问 Swing和AWT ...

    java面试题以及技巧

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题目与技巧1

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧4

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题及技巧3

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    java面试题以及技巧6

    │ 学习Struts提供的和Form相关标签.txt │ 日企编码规范.doc │ 电信盈科面试题.pdf │ 速算.txt │ 面试题URL.txt │ ├─Javascript │ │ javascript资料(源码,教材,ppt).rar │ │ │ └─javascript资料...

    Spring API

    ThreadLocal目标源 7.11. 定义新的Advice类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.2.1. Mock对象 8.2.2. 单元测试支持类 8.3. 集成测试 8.3.1. 概览 8.3.2. 使用哪个支持框架 8.3.3. ...

    Spring中文帮助文档

    ThreadLocal目标源 7.11. 定义新的Advice类型 7.12. 更多资源 8. 测试 8.1. 简介 8.2. 单元测试 8.2.1. Mock对象 8.2.2. 单元测试支持类 8.3. 集成测试 8.3.1. 概览 8.3.2. 使用哪个支持框架 8.3.3. ...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

Global site tag (gtag.js) - Google Analytics