`
michaelljx
  • 浏览: 9195 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

Tomcat的HttpConnector和HttpProcessor线程交互

    博客分类:
  • Web
 
阅读更多

The processor thread (the await method)

while (!available) { wait(); }

Socket socket = this.socket;

available = false; notifyAll();

return socket;

 

 

The connector thread (the assign method)

while (available) { wait(); }

this.socket = socket;

available = true;

notifyAll();

 

Initially, when the "processor thread" has just been started, available is false, so the thread waits inside the while loop (see Column 1 of Table 4.1). It will wait until another thread calls notify or notifyAll. This is to say that calling the wait method
causes the "processor thread" to pause until the "connector thread" invokes the notifyAll method for the HttpProcessor instance. Now, look at Column 2. When a new socket is assigned, the "connector thread" calls the HttpProcessor's assign method. The value of available is false, so the while loop is skipped and the socket is assigned to the HttpProcessor instance's socket variable: this.socket = socket;
The "connector thread" then sets available to true and calls notifyAll. This wakes up the processor thread and now the value of available is true so the program controls goes out of the while loop: assigning the instance's socket to a local variable, sets available to false, calls notifyAll, and returns the socket, which eventually causes the socket to be processed. Why does the await method need to use a local variable (socket) and not return the instance's socket variable? So that the instance's socket variable can be assigned to the next incoming socket before the current socket gets processed completely. Why does the await method need to call notifyAll? Just in case another socket arrives when the value of available is true. In this case, the "connector thread" will stop inside the assign method's while loop until the nofifyAll call from the "processor thread" is received.

分享到:
评论

相关推荐

    tomcat_iis_connector

    标题中的“tomcat_iis_connector”指的是Tomcat与IIS之间的连接器,它允许IIS(Internet Information Services)和Tomcat应用服务器进行交互,实现两者之间的集成。在Web服务器领域,IIS是微软公司推出的一款强大的...

    tomcat模板

    标题中的“Tomcat模板”指的是在Zabbix监控系统中用于监测Apache Tomcat服务器性能和状态的一种配置模板。Tomcat是一款广泛使用的开源Java Servlet容器,它实现了Java EE的Web应用程序规范,是许多企业和开发者首选...

    Apache Httpserver2.4.X 和tomcat连接器

    3. 配置mod_jk:在Apache服务器的conf目录下创建一个名为workers.properties的文件,定义Tomcat服务器实例及其工作线程等信息。同时,还需要配置mod_jk模块的JKMount指令,指定哪些URL由Tomcat来处理。 4. 配置...

    解析Tomcat处理请求的类Connector<三>

    `Connector`是Tomcat与外部世界交互的关键桥梁,负责接收并转发HTTP请求到内部的Servlet容器进行处理。 首先,我们来理解`Connector`的作用。`Connector`是Tomcat的Catalina核心模块的一部分,它通过一个特定的协议...

    Tomcat 接口文档 API

    3. **Connector**: 连接器组件是Tomcat接收和处理HTTP请求的部分。Tomcat通常有多个连接器,每个连接器可以配置不同的端口、协议和线程池。通过修改Connector的配置,可以优化服务器性能,例如设置最大连接数、超时...

    学习tomcat源码+英文《How Tomcat Work》和每一章的相关项目+tomcat6源码依赖jar

    6. **Connector(Engine、Host、Context)**:这些是Tomcat的容器概念,Engine代表整个服务器,Host代表虚拟主机,Context代表应用。每个级别都有自己的生命周期和配置。 《How Tomcat Works》这本书详细介绍了这些...

    tomcat-connectors-1.2.48-src

    而Tomcat的连接器(Connector)是其与外部世界交互的关键组件,负责接收HTTP请求并发送响应。本文将深入探讨Tomcat的连接器组件——`tomcat-connectors-1.2.48-src`,解析它的核心功能和工作原理,以及它如何与...

    Tomcat 1.7src.rar

    - **线程池管理**:Tomcat如何调度和管理线程来处理请求。 - **连接器优化**:如何配置Coyote以提高吞吐量和响应速度。 - **安全配置**:学习如何设置防火墙、SSL/TLS加密以及角色权限。 - **部署和热部署**:理解...

    Tomcat+IIS整合配置文件

    在这个文件中,会定义工作线程(workers)和它们与Tomcat实例的关系,以便正确地分发请求。 **uriworkermap.properties**:这个文件定义了URI到worker的映射,决定了哪些URL请求会被发送到哪个Tomcat实例处理。 **...

    tomcat7.0.42源码,eclipse直接使用

    - 学习和研究Tomcat如何实现Servlet容器的多线程、线程池、连接管理和内存管理等高级特性。 - 针对特定需求,开发自定义的Valve(管道组件),Connector,Realm(认证模块)等。 总的来说,Tomcat7.0.42的源码为...

    Tomcat面试专题.pdf

    - **Apr (Apache Portable Runtime)**:Tomcat通过JNI与Apache HTTP Server的动态链接库交互,提升静态文件处理性能。 3. **Connector配置参数** - `maxThreads`:最大线程数,决定了Tomcat可以同时处理的最大...

    apache-tomcat-7.0.94.zip

    Tomcat支持JSP的编译和执行,使得开发者可以轻松地创建交互式的Web应用。 3. **Java EE(Java Platform, Enterprise Edition)兼容性**:尽管Tomcat是一个轻量级的Servlet容器,但它仍然实现了Java EE的部分规范,...

    apache-tomcat-8.5.8

    2. **JK/ APR (Apache Portable Runtime)**:这部分提供了与操作系统底层交互的能力,如使用本地内存和多线程,提高性能。在Windows-x64环境下,APR库能够更好地利用64位系统的资源。 3. **Connector**:连接器组件...

    tomcat7.0下载

    3. **连接器(Connector)**:Tomcat提供了与不同网络协议(如HTTP/HTTPS)交互的组件,使得应用可以通过网络进行通信。 4. **部署工具**:Tomcat提供自动部署和热部署功能,开发者只需将应用的WAR文件放入特定目录...

    纯净tomcat.rar

    3. **连接器(Connector)**:Tomcat通过不同的连接器(如 Coyote)与外部世界交互,处理HTTP、AJP等协议的连接。 4. **部署和管理Web应用**:开发者可以将WAR文件直接放入`webapps`目录下,Tomcat会自动解压并部署...

    apache-tomcat-7.0.105.zip

    同时,Tomcat团队一直在努力优化内存管理和线程调度,以提高服务器的性能和稳定性。 在部署Java Web应用到Tomcat时,你可以将WAR文件直接放入`webapps`目录,Tomcat会自动检测并部署应用。或者,你也可以通过编辑`...

    深入剖析Tomcat书本源码

    4. **连接器(Connector)与处理器(Processor)**:Tomcat中的Connector负责接收和响应HTTP请求,而Processor则是具体处理请求的组件。理解它们之间的交互对于优化网络通信效率有重要价值。 5. **Context与Wrapper...

    Tomcat 7 源代码

    3. **线程模型**: Tomcat使用多线程处理并发请求,源代码中展示了线程池的设计和管理,包括工作线程的创建、任务调度以及线程同步机制。 4. **连接器(Connector)和引擎(Engine)**: 连接器是Tomcat接收和处理...

    tomcat-connectors-1.2.32-src.tar.gz

    5. 配置Tomcat:在Tomcat的conf/server.xml中添加AJP Connector,指定监听端口和连接器属性。 6. 创建workers.properties:定义Apache与Tomcat间的worker配置,包括worker类型、主机名、端口等信息。 7. 重启服务:...

    深入剖析Tomcat源码

    1. **Tomcat架构**:了解Tomcat的基本结构,包括Catalina、Coyote、Jasper等核心组件,以及它们在请求处理中的角色和交互方式。 2. **Servlet与JSP解析**:学习JSP如何被编译成Servlet,以及Servlet生命周期管理,...

Global site tag (gtag.js) - Google Analytics