Netty探究

Netty探究,第1张

Netty探究

经常看到高并发云云,然后大多会提到netty,现在就研究一下netty源码。

可以看到netty应该很复杂,有很多包。这里选择看看第一个netty-all。

 

这里的bootstrap包应该就是启动包。

 

 先看看这几个类,一共有7个类AbstractBootstrap,Bootstrap,ServerBootstrap,及对应的config,再加一个FailedChannel。

看注释,AbstractBootstrap是一个使启动Channel更容易地帮助类,它提供了提供了方法链来更容易地配置自己。由此可知,核心在于启动Channel。

 再看看Bootstrap类,这里没有使用泛型,并且出现了Channel。

而 ServerBootstrap里则出现了ServerChannel。

那么现在就有点头绪了。这几个Bootstrap-like地类是用来启动对应地Channel-like的类,主要是Channel和ServerChannel。而FailedChannel这里猜测是启动失败了。

没啥说的,直接看Channel类。

 

看注释就知道这个类不一般。先读一下,开头第二个单词就不认识,nexus是什么意思?查一下百度翻译:关系、联系。

那么,Channel是连接到网络套接字或者其他IO组件的。它提供了当前Channel的状态 如是否打开等,提供了Channel的配置参数如接收数据的大小,提供了IO *** 作如读写,提供了Channel管道持有当前Channel的所有事件。

然后有一行超大字体:所有的IO *** 作都是异步的。

在netty中所有的io *** 作都是异步的,这意味着,任何io调用将会立即返回结果,但不会保证此时已执行完io *** 作。ChannelFuture则会作为执行结果返回,它会在执行成功、失败、取消时通知你。

接下来又是一行超大字体:Channel是有阶级的。

根据Channel的创建方式它可以是有父亲。例如,一个SocketChannel可以通过parent()方法获得ServerSocketChannel。这里的阶级意思是Channel是属于谁的。

。。。跳过中间晦涩但琐碎的部分,直接看最后

在完成Channel 的 *** 作之后一定要调用close方法!!

总之,Channel就是一个连接通道,并且是异步的,这是整个netty的核心。

接下来就去看看Channel是怎么创建的。Channel有很多种,有庞大的继承体系,所以这里先选一个较常用的Channel,ServerSocketChannel从特殊到一般,徐图征进。

//TODO

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5583080.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存