底层原理源码是开发者进阶架构师必经之路,今天来看看Netty的核心构成块都是什么。

1、Channel

在java NIO就有这个,其实就是java NIO的基本构造。他代表到一个实体(比如一个硬件,一个文件等)

目前可以把它看作是传入和传出数据的载体。因此它可以打开或者关闭,连接或者断开

2、Callback(回调)

可以从名称中来进行理解,回调就是一个方法,一个指向已经被提供给另一个方法的引用,比如在一个操作完成后需要通知相关信息常用方式之一

Netty在内部使用了回调来处理事件;当一个回调被触发时,相关的事件被interface-ChannnelHandler的实现处理。

3、Future

该类提供了进入异步任务时,可以通过该类将在未来的某个时刻完成的任务,并提供对其结果的访问

JDK中预置了该类interface java.util.concurrent.Future,但是所提供的实现,只允许手动检查对应操作是否完成,或者一直阻塞直到异步任务结束获取到结果,这么索呢?就是非常繁琐,所以Netty提供了对它的实现ChannelFuture,用于在执行异步操作的时候使用ChannelFuture提供了几个额外的方法,这些方法可以使我们能够注册多个ChannelFutureListener实例,监听器回调方法为:operationComplete(),将会在对应的操作完成时被调用,然后监听器可以判断该操作是否完成还是出错了,如果出错了还可以检索产生的Throwable,简单来说:由ChannelFureListener提供的通知机制消除了手动检查对应的操作是否完成的必要,每个Netty的传出都返回一个ChannelFuture,反之可得,传入都不会阻塞,证实Netty是完全基于异步和事件驱动。

一文读懂Netty的核心构成块相关推荐

  1. 一文读懂ELN的核心价值以及与LIMS的区别

    电子实验记录本/笔记本(Electronic Lab Notebook,ELN),为"满足法律.法规.技术和科学专业性要求,用于创建.存储.检索和共享数据的电子实验记录系统".EL ...

  2. 一文读懂:十大DNA甲基化研究核心问题

    大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因. DNA甲基化是最早被发现.也是研究最深入的表观遗传调控机制之一,近年来关于DNA甲基化的研究成果屡屡见刊.小编翻阅各类文献,为大家总结了 ...

  3. 从根上理解高性能、高并发(七):深入操作系统,一文读懂进程、线程、协程

    本文引用了"一文读懂什么是进程.线程.协程"一文的主要内容,感谢原作者的无私分享. 1.系列文章引言 1.1 文章目的 作为即时通讯技术的开发者来说,高性能.高并发相关的技术概念早 ...

  4. ​一文读懂EfficientDet

    一文读懂EfficientDet. 今年年初Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测 ...

  5. 一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现

    一文读懂AI简史:当年各国烧钱许下的愿,有些至今仍未实现 导读:近日,马云.马化腾.李彦宏等互联网大佬纷纷亮相2018世界人工智能大会,并登台演讲.关于人工智能的现状与未来,他们提出了各自的观点,也引 ...

  6. 一文读懂大数据平台——写给大数据开发初学者的话!

     一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...

  7. 一文读懂图卷积GCN

    " 本文的内容包括图卷积的基础知识以及相关辅助理解的知识点,相信同学们看完后一定能平滑上手理解GCN!" 作者:苘郁蓁 来源:知乎专栏 郁蓁的机器学习笔记. 编辑:happyGir ...

  8. gps导航原理与应用_一文读懂角速度传感器(陀螺仪)的应用场景

    前文我们大致了解陀螺仪的来历,原理和种类,那么,它与我们的日常生活有怎样的关系呢? 陀螺仪器最早是用于航海导航,但随着科学技术的发展,它在航空和航天事业中也得到广泛的应用.陀螺仪器不仅可以作为指示仪表 ...

  9. 一文读懂 | CPU负载均衡实现

    在<一文读懂 | 进程怎么绑定 CPU>这篇文章中介绍过,在 Linux 内核中会为每个 CPU 创建一个可运行进程队列,由于每个 CPU 都拥有一个可运行进程队列,那么就有可能会出现每个 ...

最新文章

  1. 社会丨中外大学校长:人工智能时代 未来高校教什么
  2. 使用AngularJS上传文件
  3. 使用nginx+Apache负载均衡及动静分离
  4. 三十八、学Sql,不了解Sql注入怎么行?
  5. 【Linux网络编程】浅谈 TCP 三次握手和四次挥手
  6. 双鉴探测器是哪两种探测方式结合_老师傅带你看懂火灾探测器的种类和基本原理,看完涨知识了...
  7. java 异常 检查型和非检查型
  8. fatal error C1010: unexpected end of file while looking for precompiled header directive
  9. vue路由vue-router的使用
  10. 函数声明应该写在什么位置?main函数里面还是前面?(都可以,只要在调用语句的前面即可)
  11. 托管c++ (CLI) String^ 、 std::string 、 std::ostringstream的相互转化
  12. PDF文件转换成什么格式最适合编辑?
  13. win7原版映像中添加usb3.0驱动
  14. java 字数_Java字数统计程序
  15. 【报告分享】AIoT智能生活场景营销研究报告-小米中传(附下载)
  16. java lambdamart库,LambdaMART笔记
  17. ODCC 2016峰会即将召开——十大“技术大餐”提前揭秘
  18. qcom android GPS 启动流程
  19. 矩阵理论| 基础:矩阵范数
  20. 矩阵理论| 特殊矩阵:幂等矩阵、投影、正交投影

热门文章

  1. 小米路由通过SSH添加静态路由表之后无法跳转的问题
  2. MyEclipse项目里面出现红叉的解决方案?
  3. webdriver原理(自己做个记录)
  4. cafffe---之params参数
  5. C++ Primer Plus学习(十二)——类继承(is-a)
  6. 《移动浪潮》读书笔记
  7. 面试题之求二叉树的深度
  8. Laplacian of Gaussian (LOG) 高斯拉普拉斯算子
  9. linux下多版本opencv共存问题
  10. python服务器搭建qt搭建客户端_利用PythonQT,定制服务器启动工具