美文网首页Java 杂谈深入浅出Netty源码剖析
【第7篇】Netty初始化过程与Future源码分析

【第7篇】Netty初始化过程与Future源码分析

作者: 爱学习的蹭蹭 | 来源:发表于2019-05-20 23:16 被阅读1次

1、 ServerBootStrap

  • ServerBootStrap是一个BootStrap的一个启动类
  • group 会处理所有的IO和事件

2、 return this

  • return this表示返回方法的对象

3、Netty的反射支持(重点)

  • 反射:通过反射机制能获取类定义的属性与方法成员,这样的动态调用方式称为反射
  • 凡是方法接收一个class的对象,其实就是跟反射有关如:channel(NioServerSocketChannel.class)
  • 代码显示
  //创建ServerBootstrap
  ServerBootstrap serverBootstrap = new ServerBootstrap();
  //设置参数的接收请求bossGroup和workerGroup对参数的实现实现对象处理、并对处理器绑定Channel
  serverBootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class).
  handler(new LoggingHandler(LogLevel.INFO)). childHandler(new WebSocketChannelInitializer());
channel

4、Future(重点)

  • Future是异步,提供中断、是否执行,是否完成
  • Future是一个futurej计算异步的结果,异步的计算他动作一定发生在另外一个线程的Future.get的方法的结果之前,由于内存一致性所影响的(难点

5、 ChannelFuture(重点)

  • ChannelFuture 使用大量的事件监听器,是一个Channel异步IO的操作,而且Netty的所有IO都是异步的
  • 一个ChannelFuture要么是完成与未完成状态,当I/O操作开始时,一个Future的创建,表示完成状态失败与成功的返回
  • ChannelFuture提供很多方法进行检测I/O,监控await不建议使用此方法,建议addListener方法,由于此方法是非阻塞
  • 不要在ChannelHandler调用await方法,通常事件处理器方法被I/O的方法调用,await事件被的处理器调用的话,那么时间的处理被IO线程被调用的,那么等待的I/O操作就可能不会完成就可能造成死锁(**Do note confuse I/O timeout and await Timeout,意思就说不要把IO超时与await超时混在一谈**)
ChannelFuture

6、Netty的Future与JDK的Future有点在哪里?(重点和改良点)

  • Netty的Future它是继承JDK的Future
  • JDK的Future不知道什么时候调用Future.get()方法,Netty使用监听器解决这个问题,使用观察者模式
  • Netty的Future提供可以调用性,可用性的问题进行改良
  • Netty Future

7、ChannelPipeline的作用(重点)

  • ChannelPipeline管道,将多个Channel连接起来一起进行操作
  • initChaannel当主持时会被调用,当实例方法返回的时会从管道进行移除
ChannelPipeline

8、 Netty使用监听(观察设计模式)

  • 凡是用监听几乎都是使用观察模式(状态发生变化)

相关文章

网友评论

    本文标题:【第7篇】Netty初始化过程与Future源码分析

    本文链接:https://www.haomeiwen.com/subject/qulrzqtx.html