`

几种开源Java Web容器线程池的实现方法简介——Tomcat(一)

阅读更多
前市场上常用的开源Java Web容器TomcatResinJetty。其中Resin从V3.0后需要购买才能用于商业目的,而其他两种则是纯开源的。可以分别从他们的网站上下载最新的二进制包和源代码。

作为Web容器,需要承受较高的访问量,能够同时响应不同用户的请求,能够在恶劣环境下保持较高的稳定性和健壮性。在HTTP服务器领域,Apache HTTPD的效率是最高的,也是最为稳定的,但它只能处理静态页面的请求,如果需要支持动态页面请求,则必须安装相应的插件,比如mod_perl可以处理Perl脚本,mod_python可以处理Python脚本。

上面介绍的三中Web容器,都是使用Java编写的HTTP服务器,当然他们都可以嵌到Apache中使用,也可以独立使用。分析它们处理客户请求的方法有助于了解Java多线程和线程池的实现方法,为设计强大的多线程服务器打好基础。

Tomcat是使用最广的Java Web容器,功能强大,可扩展性强。最新版本的Tomcat(5.5.17)为了提高响应速度和效率,使用了Apache Portable Runtime(APR)作为最底层,使用了APR中包含Socket、缓冲池等多种技术,性能也提高了。APR也是Apache HTTPD的最底层。可想而知,同属于ASF(Apache Software Foundation)中的成员,互补互用的情况还是很多的,虽然使用了不同的开发语言。

Tomcat 的线程池位于tomcat-util.jar文件中,包含了两种线程池方案。方案一:使用APR的Pool技术,使用了JNI;方案二:使用Java实现的ThreadPool。这里介绍的是第二种。如果想了解APR的Pool技术,可以查看APR的源代码。

ThreadPool默认创建了5个线程,保存在一个200维的线程数组中,创建时就启动了这些线程,当然在没有请求时,它们都处理“等待”状态(其实就是一个while循环,不停的等待notify)。如果有请求时,空闲线程会被唤醒执行用户的请求。

具体的请求过程是: 服务启动时,创建一个一维线程数组(maxThread=200个),并创建空闲线程(minSpareThreads=5个)随时等待用户请求。 当有用户请求时,调用 threadpool.runIt(ThreadPoolRunnable)方法,将一个需要执行的实例传给ThreadPool中。其中用户需要执行的实例必须实现ThreadPoolRunnable接口。 ThreadPool首先查找空闲的线程,如果有则用它运行要执行ThreadPoolRunnable;如果没有空闲线程并且没有超过maxThreads,就一次性创建minSpareThreads个空闲线程;如果已经超过了maxThreads了,就等待空闲线程了。总之,要找到空闲的线程,以便用它执行实例。找到后,将该线程从线程数组中移走。 接着唤醒已经找到的空闲线程,用它运行执行实例(ThreadPoolRunnable)。 运行完ThreadPoolRunnable后,就将该线程重新放到线程数组中,作为空闲线程供后续使用。

由此可以看出,Tomcat的线程池实现是比较简单的,ThreadPool.java也只有840行代码。用一个一维数组保存空闲的线程,每次以一个较小步伐(5个)创建空闲线程并放到线程池中。使用时从数组中移走空闲的线程,用完后,再“归还”给线程池

分享到:
评论

相关推荐

    架构解析——Tomcat

    Tomcat是一款开源的、基于Java Servlet和JavaServer Pages (JSP) 技术的Web应用服务器,由Apache软件基金会维护。它是Java EE(现在称为Jakarta EE)平台的核心组成部分,特别适合小型到中型的Web应用程序部署。...

    精通Tomcat-Java Web应用开发

    1. **Tomcat基础**:Tomcat是一个开源的、轻量级的Java Servlet容器,主要用于运行Java Servlet和JavaServer Pages(JSP)技术。书中首先会介绍Tomcat的安装与配置,包括环境变量设置、服务器启动与停止等基本操作。...

    绿色——TOMCAT 6.0

    TOMCAT 6.0是一款广泛使用的开源Java Servlet容器,由Apache软件基金会的Tomcat项目开发并维护。它遵循Java EE规范,特别是Servlet和JSP标准,为开发者提供了轻量级的Web应用程序托管环境。"绿色版"通常指的是不需要...

    模仿tomcat的国产开源web服务器

    JerryMouse是一个基于Java开发的国产开源Web服务器,它的设计灵感来源于知名的Apache Tomcat服务器。Tomcat作为Java Servlet和JavaServer Pages(JSP)技术的标准实现,是许多开发者进行Java Web应用部署的首选。而...

    Apache Tomcat一个开源的 Java Servlet 容器和 Web 服务器

    Apache Tomcat是一款功能强大且广受欢迎的开源软件,它既是Java Servlet容器也是Web服务器。Tomcat能够运行Java代码,并全面支持Jakarta EE(原Java EE)技术栈中的关键组件,包括Servlets和JSP(JavaServer Pages)...

    Tomcat与Java_Web开发技术详解3.pdf

    综上所述,《Tomcat与Java Web开发技术详解》这本书不仅全面覆盖了Tomcat的基本使用方法,还深入探讨了Java Web开发中的高级技术,对于希望深入了解Tomcat及其在Java Web开发中应用的读者来说,是一本非常有价值的...

    Tomcat与Java Web开发技术详解源代码.rar

    《Tomcat与Java Web开发技术详解》是一本深入解析Tomcat服务器和Java Web开发的经典教程。书中通过丰富的实例,详细介绍了如何使用Tomcat作为应用服务器进行Web应用的部署和管理,以及如何使用Java语言和相关技术来...

    Tomcat与Java Web开发技术详解(第2版).pdf

    《Tomcat与Java Web开发技术详解(第2版)》是一本深入探讨Java Web应用程序部署和运行环境的权威指南。本书主要围绕Apache Tomcat服务器展开,涵盖了从基础概念到高级特性的全方位讲解,旨在帮助读者掌握Java Web...

    web容器服务神器apache-tomcat-7.0.42-windows-x86

    Apache Tomcat是一个开源的Web应用服务器,特别以其作为Java Servlet和JavaServer Pages(JSP)容器而闻名。它被广泛用于开发和部署基于Java技术的Web应用程序。在本例中,我们讨论的是Apache Tomcat 7.0.42版本,专...

    tomcat6.0 适用与java web 程序的开发服务器

    Tomcat 6.0是一款广泛应用的开源Java Web服务器,由Apache软件基金会维护,它实现了Java Servlet和JavaServer Pages(JSP)规范,为Java Web应用程序提供了一个轻量级且高效的运行环境。在Java Web开发领域,Tomcat...

    Tomcat与Java.Web开发技术详解

    Tomcat是一款开源的轻量级Web应用服务器,它是Apache软件基金会Jakarta项目的一部分,主要用于执行Java Servlet和JavaServer Pages(JSP)。由于其小巧、快速且易于配置的特点,Tomcat在Java Web开发中广泛应用。 ...

    亮剑Java web源代码+ppt教程01——11

    8. **Tomcat服务器**:Tomcat是Apache软件基金会的开源Java Web服务器,支持Servlet和JSP标准。了解如何配置、部署和管理Tomcat是Java Web开发者的基本技能。 9. **Eclipse或IntelliJ IDEA集成开发环境**:这些IDE...

    Tomcat与Java Web开发技术详解 第二版配套光盘源码

    1. **Tomcat服务器**:Tomcat是一款开源、轻量级的Java Servlet容器,它支持Servlet和JSP标准。在学习Java Web开发时,Tomcat是初学者常用的服务器环境,因为它易于安装和配置。通过源代码,读者可以了解如何部署和...

    Tomcat与Java.Web开发技术详解+源代码

    Tomcat是Apache软件基金会的Jakarta项目中的一个核心项目,是一个开源的Servlet容器,实现了Java Servlet和JavaServer Pages(JSP)规范。Tomcat以其轻量级、易用性和稳定性而广受欢迎,常用于小型到中型的Web应用...

    孙卫琴 Tomcat与Java&Web开发技术详解.pdf

    Tomcat是由Apache软件基金会(ASF)开发的一款开源的Servlet容器,主要用于支持Java Web应用程序的运行。它基于SUN Microsystems提供的Java Servlet规范以及JavaServer Pages(JSP)技术。 #### 1.2 Tomcat架构 - *...

    通过EasyExcel+线程池实现百万级数据从Excel导入到数据库

    在处理大量数据导入数据库的场景中,使用阿里巴巴开源的EasyExcel库结合线程池技术可以有效地实现从Excel文件导入到数据库的过程。先定义sheet的数量和固定大小的线程池数量,每个sheet页做为单独的任务交给线程池...

    tomcat与java web开发

    【标题】:“Tomcat与Java Web开发”是一个广泛的话题,涉及到使用Apache Tomcat服务器来部署和运行基于Java的Web应用程序。Tomcat是一个开源的、轻量级的应用服务器,主要用于执行Servlet和JavaServer Pages (JSP)...

    Tomcat与Java Web开发技术详解(第2版)PDF

    Tomcat作为Apache软件基金会的一个开源项目,是世界上最流行的Java Servlet容器之一,广泛用于部署Java Web应用。这本书的第二版更新了与最新技术相关的知识,旨在帮助读者全面掌握在Tomcat上开发、部署和管理Java ...

    Java Web快速入门——全十讲

    除了Tomcat,还有IBM Websphere、BEA WebLogic、JBoss等商业或开源的Java EE容器,以及Oracle的GlassFish服务器,后者是Java EE 5规范的一个完整实现。 开发工具的选择同样重要,Eclipse、NetBeans、IntelliJ IDEA...

    开源地理信息GIS,java实现的webGIS

    标题 "开源地理信息GIS,java实现的webGIS" 指的是使用Java编程语言开发的,基于Web的地理信息系统(Geographic Information System,简称GIS)。GIS是一种用于处理、分析、展示地理位置数据的技术,而开源GIS则意味...

Global site tag (gtag.js) - Google Analytics