dream_it_life
轻狂
采纳率100%
2016-01-12 08:03

关于Servlet多线程的问题

已采纳

Servlet是单实例多线程的,所以我就做了一个小的测试验证这种模式,很简单,

class DemoServlet extends HttpServlet {

public void doGet(......) {
    System.out.println("come in.");
    Thread.sleep(10 * 1000);
}

}

然后在浏览器多个地址栏同时请求这个servlet,发现必须第前面的请求结束,后面的请求才可以进入doGet方法,实在搞不懂为什么,求大神帮解答下!!

另外,关于异步Servlet的也是如此,必须等前面请求的AsyncContext.complete()之后,后面的请求才能进doGet方法,这还算多线程吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • snailplus snailplus 5年前

    认为这跟servlet无关,下面的应该是可能的情况
    1. 服务器的请求允许数已被设置为1(如果你没动过,那么不会是1)。
    2. 使用多个浏览器同时请求尝试(怀疑同一session Id被和谐,嗯,有可能是服务器优化的一种表现,不是很好吗)。
    3. 使用多个终端同时请求尝试(怀疑同一session Id被和谐)。
    4. 你看错了。

    点赞 1 评论 复制链接分享
  • djszero djszero 5年前

    这是同步多线程,一个资源一次只能被一个线程访问!
    要同时访问就是异步了

    点赞 评论 复制链接分享
  • djszero djszero 5年前

    这是同步多线程,一个资源一次只能被一个线程访问!
    要同时访问就是异步了

    点赞 评论 复制链接分享
  • wojiushiwo945you 毕小宝 5年前

    Servlet的多线程环境是由Servlet容器处理用户请求的方式决定的,Servlet容器处理每个用户的请求时都启动一个线程去处理的,所有线程共享Servlet实例对象。
    Servlet的线程安全与否与Servlet对象中是否有共享变量,以及对共享变量的访问是否有同步处理决定的。
    详情参考:http://www.cnblogs.com/itTeacher/archive/2012/11/14/2769822.html
    另外CSDN一篇文章也相信讲述了Servlet的安全性的含意:http://blog.csdn.net/yaerfeng/article/details/7385860

    点赞 评论 复制链接分享
  • Royal_lr Royal_lr 5年前

    就是说是同步的,,并不是异步的,,,

    点赞 评论 复制链接分享
  • xionglangs 编程爱好者熊浪 5年前

    Servlet是单例线程安全的类,它可以实现多个用户同时访问,但因为它是单例线程安全的,就等于是对象锁,当有人在用这个对像的时候,别人就没有Servlet对象,就不能调用方法,就只能等别人放开这个对象之后,才能调用方法。

    点赞 评论 复制链接分享
  • CSDNXIAOC Robot-C 5年前

     介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安全的原因,给出了保证Servlet线程安全的三种解决方案,并说明三种方案在实际开发中的取舍。

      关键字:Servlet 线程安全 同步 Java内存模型 实例变量

      Servlet/JSP技术和ASP、PHP等相比,由于其多线程运行而具有很高的执行效率。由于Serv......
    答案就在这里:servlet 多线程问题
    ----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

    点赞 评论 复制链接分享

相关推荐