在服务器里,有一个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()方法。

tomcat servlet 线程的更多相关文章

  1. (2.1)servlet线程安全问题

    本文参考链接:http://www.yesky.com/334/1951334.shtml 摘 要:介绍了Servlet多线程机制,通过一个实例并结合Java 的内存模型说明引起Servlet线程不安 ...

  2. Servlet线程安全 Filter http://zwchen.iteye.com/blog/91088

    概述 在探讨java线程安全前,让我们先简要介绍一下Java语言. 任何语言,如C++,C#,Java,它们都有相通之处,特别是语法,但如果有人问你,Java语言的核心是什么?类库?关键字?语法?似乎 ...

  3. Web开发之Tomcat&Servlet

    <!doctype html>01 - JavaEE - Tomcat&Servlet figure:first-child { margin-top: -20px; } #wri ...

  4. tomcat&servlet初记

    tomcat&servlet初记 1. web相关概念 2. web服务器软件的学习:tomcat 3. servlet入门学习 web相关概念 1,软件架构 1,cs架构:客户端/服务器端 ...

  5. javaweb回顾第六篇谈一谈Servlet线程安全问题

    前言:前面说了很多关于Servlet的一些基础知识,这一篇主要说一下关于Servlet的线程安全问题. 1:多线程的Servlet模型 要想弄清Servlet线程安全我们必须先要明白Servlet实例 ...

  6. What is the difference Apache (Http Server) and Tomcat (Servlet Container)

    The Apache Project The Apache Project is a collaborative software development effort. Its goal is to ...

  7. Tomact高并发&Servlet线程处理

    Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率.由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的安全性问题.然而 ...

  8. TOMCAT ---> servlet概念

    1 TOMCAT ---> servlet概念 2 TOMCAT 目录结构 (各个文件夹都存放什么东西) 3 TOMCAT 程序的层级 web | |---- js,jsp,html,css ( ...

  9. Tomcat&Servlet

    Tomcat&Servlet 一.web开发相关的概念 1. 软件架构 1.1 C/S架构 C:Client客户端, S:Server服务器 比如:QQ.微信.大型网游 优点: 显示效果炫 安 ...

随机推荐

  1. Understanding Asynchronous IO With Python 3.4's Asyncio And Node.js

    [转自]http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html Introduction I spent this su ...

  2. VB6的命令行参数

    在DOS窗口下执行如下命令: C:\Program Files\Microsoft Visual Studio\VB98>vb6 /?

  3. iBeacons 资源汇总

    从淘宝上购买了iBeacons的开发模块,便开始要熟悉这个技术了. 先来说一下什么是iBeacons iBeacons是苹果在2013年WWDC上推出一项基于蓝牙4.0(Bluetooth LE | ...

  4. Hibernate 只获取外键id,不获取内容

    Hibernate,jpa注解映射中 A多对一B A的表中有B的外键. 如果想只获取A表中的B的外键而不想发送查询B的sql语句. 那么: @ManyToOne(fetch=FetchType.LAZ ...

  5. Bootstrap栅格系统

    栅格系统分为两种:默认栅格系统 row,流式栅格系统 row-fluid. row 默认栅格系统:即指定了每个栅格的宽度为60px,间距为20px.共有12个栅格.总宽度为940px; 即12个栅格= ...

  6. MS Sqlserver 备份数据库SQL

    通过作业的方式调用SQL执行自动备份,可以解决忘记备份数据库的问题,记录一下 declare @FileFullName varchar(40); declare @FileName varchar( ...

  7. win7设置防火墙允许Ping与telnet

    Ping: 打开控制面板 >> 系统安全 >> windows防火墙 >> 高级设置 >> 入站规则

  8. List集合分组

    var ArticleList = new Services.Data.SearchService().GetArticleBaseList(ref param); IEnumerable<IG ...

  9. Oracle中MD5+Base64加密实现

    JAVA实现: public static String getMD5(String str) throws Exception {   MessageDigest md5 = MessageDige ...

  10. 将你的代码上传 Bintray 仓库

    在 Android Studio 中,我们通常可以利用 gradle 来导入别人写的第三方库,通常可以简单得使用一句话就能搞定整个导包过程, 比如: compile 'net.cpacm.moneyt ...