`
lijackly
  • 浏览: 71903 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

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

阅读更多

   目前市场上常用的开源Java Web容器有Tomcat、Resin和Jetty。其中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个)创建空闲线程并放到线程池中。使用时从数组中移走空闲的线程,用完后,再“归还”给线程池。


分享到:
评论
1 楼 rocksun21 2010-06-07  
估计大家都对apr的实现非常感兴趣。

相关推荐

    架构解析——Tomcat

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

    web学习笔记 —— tomcat

    在Web开发领域,Tomcat是一个广泛使用的Java Servlet容器,它实现了Java EE中的Web部分,特别是Servlet和JSP规范。Tomcat以其开源、轻量级和高效的特性,成为了许多小型项目和开发环境中的首选服务器。本笔记将深入...

    精通Tomcat-Java Web应用开发

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

    Java开发必备工具——你想要的全套开发工具1——Tomcat6和7

    Tomcat是Apache软件基金会的开源项目,是一个轻量级的Java Servlet容器,它实现了Servlet和JavaServer Pages (JSP) 规范,使得开发者可以在没有全功能应用服务器的情况下运行Java Web应用。Tomcat6是2006年发布的一...

    绿色——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应用部署的首选。而...

    Tomcat与Java.Web开发技术详解(PDF)

    1. **Tomcat介绍**:Tomcat是Apache软件基金会的Jakarta项目下的一个开源Web服务器和Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,是Java Web应用最常用的运行环境之一。Tomcat以其轻量级、...

    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...

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

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

    Tomcat(全称为Apache Tomcat)是一个开源的Java Servlet容器,由Apache软件基金会下属的Jaka

    tomcatTomcat(全称为Apache Tomcat)是一个开源的Java Servlet容器,由Apache软件基金会下属的Jakarta项目开发。Tomcat实现了Java Servlet、JavaServer Pages(JSP)和Java Expression Language(EL)等Java技术,...

    Tomcat与Java.Web开发技术详解附书光盘1

    《Tomcat与Java.Web开发技术详解》是一本深入探讨Java Web应用服务器——Tomcat以及相关开发技术的专业书籍。光盘附带的"sourcecode1"文件可能是书中示例代码或练习项目的源码,旨在帮助读者更好地理解和实践所学...

    亮剑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开发技术详解

    Tomcat是Apache软件基金会的Jakarta项目下的一个开源Servlet容器,它实现了Java Servlet和JavaServer Pages(JSP)规范,是进行Java Web应用部署的常用平台。Java.Web则是指使用Java语言进行Web应用开发的一系列技术...

    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 ...

Global site tag (gtag.js) - Google Analytics