1.Channel

Java NIO 的一个基本构造

一个到实体的开放连接,例如,读操作和写操作,channel可以看做事出站和入站的数据载体

2.回调

本质上一个方法,一个指针,一个指向另一个方法的引用,可以让其翻过来调用调用者

Netty利用了回调实现事件的处理

3.Future

另一种操作完成时候的通知机制,类似子线程完成了某项任务,可以让父线程手动的去查询子线程的完成情况

Netty有着自己的实现ChannelFuture,执行异步操作使用

ChannelFuture提供了额外的方法,可以注册多个ChannelFutureListener实例

在其中的实现方式,就是提供了一个回调,方便在操作完成的时候进行调用,来让父线程检测是否完成了任务

Netty的每个出站都返回一个channelFuture,保证不会阻塞

4.事件和ChannelHandler

Netty利用不同的事件来通知我们状态的改变和操作的状态,能够基于已经发生的事件来触发适当的动作,常见的事件有:记录日志,数据转换,流控制,应用程序逻辑

出站数据或者相关的状态改变的事件也可能触发:连接激活或者失活,数据读取,用户事件,错误事件

然后我们将其总结一下

Netty的异步编程是建立在Future和回调概念上的,事件派发到ChannelHander上,其结合导致有了一个合理的处理环境

我么你只需要提供回调或者操作返回的Future就可以处理连接操作,更加的高效化

对于选择器 事件 EventLoop这些概念

Selector是一种更高层次的概念,消除了连接派发,然后,为每一个Channel分配一个EventLoop

包括,注册感兴趣的事件

事件派发给ChannelHandler

安排进一步的动作

EventLoop,由一个线程驱动,可以处理一个Channel的所有IO,整个生命周期都不会变化

发表评论

邮箱地址不会被公开。 必填项已用*标注