Tomcat(四)网络连接器-Nio2EndPoint

一、异步IO

异步最大的特点是,应用程序不需自己去触发,数据从内核空间叫用户空间的拷贝。应用程序是无法主动访问内核空间的。那么有两种处理方式,有两种方式:
**1、内核主动拷贝数据到应用程序中 **
2、等待应用程序通过 Selector 来查询,当数据就绪后,应用程序再发起一个 read 调用,这时内核再把数据从内核空间拷贝到用户空间。

数据准备好后,数据从内核拷贝到用户空间的这一段时间,应用程序还是阻塞的。

二、异步IO与同步IO的区别

在这里插入图片描述

**异步IO:**通过注册的回调函数,内核会主动通知数据。调用readAPI时需要告诉内核2件事情: 1、数据准备好后存储在哪个buffer,以及应用程序指定的回调函数。

三、Nio2EndPoint

在这里插入图片描述

  • Nio2EndPoint与 NIoEndPoint最大的区别是 前者没有Poller组件,也就是没有Selector,因为不许需要应用程序去主动读取数据,内核会将准备好的数据回调。
3.1 SocketProdes是何如获取数据的?

Http11Processor调用Channle获取数据时应该会立马异步返回结果的,如果读取到数据的?
Http11Processor 是通过 2 次 read 调用来完成数据读取操作的。

  • 第一次read获得连接;注册回调函数准备第二次read;SocketProcess被回收
  • 第二次read创建新的SocketProcessor处理数据,持有原来的 Nio2SocketWrapper(它是作为附近传递)
参考

极客时间-深入理解Tomcat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值