栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Netty探究

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/591886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号