您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

我用发工资和女朋友的栗子讲明白netty中的核心组件

 看看netty为我们提供的核心组件

  1. channel:netty中把一个端到端的通信定义为了通道。所谓的端包含但不限于硬件设备,文件。这是对通信的第一层抽象。通道也是一个连接。
  2. 回调:这个回调是netty的一个机制,我用生活的栗子来解释。理解下边的一句话:"等发工资了,就买一个新手机;如果有女朋友了,就带她去吃好吃的"。其中买手机和带女盆友吃好吃的是预定于好要做的事情,这就是netty中将要回调的事情。而发工资是实践驱动,如果不发工资,那么预定义好的事情都不能做。如果发工资这件事情发生了,那么就发生回调。在netty中,定义包含了回调的组件就是 ChannelHandle,真正的回调就是 ChannelHandle 中的channelActive()方法。
  3. Future:未来结果的占位符。还是先用生活的栗子来将这个未来占位符的概念,其实不难懂。 就好比方买房子,你买之前肯定有计划打算,就买四居室,自己和女朋友住一间,父母住一间,并且打算好了要两个孩子,那就需要两个卧室。但是现在还没有孩子,你依旧预留好两间卧室。这就是未来的占位符,等有了孩子这件事情发生了,那么这个卧室就可以被用了。这也很好的体现了netty的基于事件驱动的思想,给异步非阻塞带来了可能性。这对应我们程序中的就是一个方法,调用另外一个方法,但是前者调用的方法定义好了拿到结果以后怎么做。并告诉被调用者怎么做。再举一个栗子,你想要给女朋友预定一个生日蛋糕,于是你去了蛋糕店,你跟老板说,给我来一个米其林蛋糕,如果做好了,送到 XXX。你调用了蛋糕店老板去完成做蛋糕的这个动作,并且定好了这个动作完成后执行的动作。JDK预置interface  java.util.concurrent.Future ,但是其所提供的实现,只允手动检查对应的操作是否已完成,或者一直阻塞直到它完成。这是非常繁琐的,所以Netty提供它自己的实现——ChannelFuture ,用与执行异步操作的时候用。
  4. 事件和channelHandle。事件又是怎么一回事呢,什么是netty中的事件?前边一直提到netty基于事件驱动。那么什么又是事件:举个栗子,还说上边发工资买新手机的栗子,其中买手机这个动作就是事件。考虑到扩展性,所有的动作成为是事件,实际上发了工资你不光能买手机,还能和同事出去撮一顿,还能买房子。那么对应程序中,处理业务逻辑,打印日志,等等操作就是事件,这些都由你来定义。而netty给我们实现好的事件就包括了:处理SSL,编码与解码。把要做的事情一件一件的列出来,然后放在channelHandle里边等着去执行。

分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进