概述
Channel是netty网络操作抽象类,它聚合网络的读、写、客户端发起连接、主动关闭连接、链路关闭,获通信双方的网络地址等,也包括获取该Chanel的EventLoop获取缓冲分配器的ByteBufAllocator和pipeline等。也是非常非常重要的。
一,看下它的设计理念:1,Netty在Channel接口层,采用Facade模式进行统一封装,将网络I/O操作和相关的其他操作封装起来,统一对外提供;2,Channel接口的定义尽量大而全,为SocketChannel和ServerSocketChannel提供统一的视图,由不同子类进行实现不同的功能,最大程度的实现功能和接口的重用;3,具体实现采用聚合而非包含的方式,将相关功能聚合在Channel中,由Channel统一负责分配和调度,功能实现更加灵活。
二,来看下Channel的相关功能:
三,看看Channel的相关继承关系统:
1,server端:
2,client端:
四,相关类的源码分析,这里我还是用思维导图的形式,将源码和分析部分放到了注释中,其实按照我的思维导图,用心看这些类,基本上都能读个差不多的:
好,今天主要讲了Channel的相关功能、接口类结构、源码分析。细心的朋友一定会看到其实在Channel中有一个内部接口Unsafe,其实Channel很多操作都是通过调用Unsafe来实现的,下篇我们学习Unsafe相关知识。
其实JDK也有Unsafe类,我们可以先学习一下这个:说一说Java的Unsafe类(https://www.cnblogs.com/pkufork/p/java_unsafe.html)
PS:思维导图的下载:Channel相关总结
最后
以上就是单纯柠檬为你收集整理的Netty(十)——Channel功能之剖的全部内容,希望文章能够帮你解决Netty(十)——Channel功能之剖所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复