zoukankan      html  css  js  c++  java
  • tomcat servlet 线程

    在服务器里,有一个servlet,当客户端第一次访问服务器时,tomcat会 帮我们建一个servlet的对象出来,(注意: tomcat里面可能部署了10个Servlet,如果某一个Servlet从未有客户端调用过,那我们new它的实例,企不是没有意义,所以new实例 出来,是客户端第一次访问的时候。)然后帮忙高用init(ServletConfig)方法,这个方法可以做一些初始化的工作,而且这个方法也只调用一 次,接着以多经程的方式,处理客户端的请求,例如一个请求过来了,tomcat帮忙调用service()方法,service()方法又调用了受保护的 service()方法,这个受保护的service()方法,又帮忙调用了doGet()或是doPost()方法。

    多线程是怎么回事呢?tomcat内部有一个线程池,如果这个servlet的访 问量很大,一下子有100个人,全部过来了,tomcat 不会帮我们new出100个HelloWorldServlet的对象出来的,自始至终,这个对象只有一个,这个对象会提前准备出若干个线程,但是让一个 线程跑起来,是有开销的,有时开销我们都会感觉出来的,因为线程比较耗时,所以,让线程提前跑起来,这些跑起来的线程组成一个线程池。

    客户端的请求,比如,第一个请求过来了,tomcat会从线程池,分配一个空闲的线程,处理这个请求,如果同时有第二个客户端的请求过来了,tomcat从线程池里分配另外一个闲着的线程,处理第二个请求,也就是说,以是这种并发的方式进行处理的,多线程的方式处理的。

    每一个线程,都是访问同一个servlet对象,都是通过这一个对象的引用,调用service()方法。

  • 相关阅读:
    JavaScript 进阶篇的学习~
    JavaScript 基础的复习~
    JVM字节码解析
    Tomcat压力测试与优化方案
    Tomcat优化
    JVM垃圾收集器
    JVM的垃圾回收机制(GC)
    JVisual VM工具使用
    jstack监控JVM线程的运行情况
    监控JVM内存使用情况
  • 原文地址:https://www.cnblogs.com/webglcn/p/5265719.html
Copyright © 2011-2022 走看看