Tomcat源码解析(六):HttpConnector和HttpProcessor的异步工作机制

HttpConnector请求处理分工如下:

1、ServerSocket等待接受Http请求连接;

2、请求到达,从HttpProcessor处理池获取处理对象;

3、委托给HttpProcessor具体处理请求;

4、当前HttpConnector继续等得下一个Http请求;


具体HttpConnector和HttpProcessor如何实现异步工作机制?

HttpConnector和HttpProcessor两者都实现Runnable接口,并且两者本身运行在自身线程中。

这里我们称HttpConnector实例中run方法所在线程为连接器线程;而HttpProcessor实例中run方法所在线程为处理器线程。


首先看下HttpConnector对应连接器线程的run方法,主要工作:

1、阻塞等待Http请求;
2、为每个请求分配一个HttpProcessor对象;
3、调用HttpProcessor的process()方法处理;

 	public void run() {
        // 循环,直到shutdown
        while (!stopped) {
        	// 监听socket
            Socket socket = serverSocket.accept();

            // 为socket分配处理器
            HttpProcessor processor = createProcessor();
            // 如果当前没有空闲处理器
			if(processor == null) {
				// 忽略请求,不做处理
			}
            // 执行处理
            processor.assign(socket);
        }
	}
HttpConnector中run方法所在连接器线程进入HttpProcessor对象的assign()方法,如下:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值