美文网首页
2018-08-23 netty异步

2018-08-23 netty异步

作者: 麦麦_202f | 来源:发表于2018-08-27 09:29 被阅读0次

    //netty 中writeandflush()方法

    整体步骤:先write再flush

    write流程

    ctx.writeAndFlush() –> TailHandler –> Handler … —> HeadHandler –> Unsafe.write() 

    write方法实际上并没有将消息写出去, 而是将消息msg和此次操作的promise放入到当前连接的输出缓冲区OutboundBuffer中了;

    flush流程

    ctx.writeAndFlush() –> TailHandler –> Handler … —> HeadHandler –> Unsafe.flush() –> AbstractNioByteChannel.doWrite() –> ChannelOutboundBuffer.remove() –> Promise.notifyListeners();

    Netty强烈建议直接通过添加监听器的方式获取IO结果,而不是通过同步等待的方式

    如果用户操作调用了sync或者await方法,会在对应的future对象上阻塞用户线程,例如future.channel().closeFuture().sync()

    //springboot第27章

    ApplicationEvent以及Listener是Spring为我们提供的一个事件监听、订阅的实现,内部实现原理是观察者设计模式

    在Spring内部中有多种方式实现监听如:@EventListener注解、实现ApplicationListener泛型接口、实现SmartApplicationListener接口等,我们下面来讲解下这三种方式分别如何实现。

    既然是监听所有的事件发布,那么SmartApplicationListener接口添加了两个方法supportsEventType、supportsSourceType来作为区分是否是我们监听的事件,只有这两个方法同时返回true时才会执行onApplicationEvent方法。

    事件监听是无序的,监听到的事件先后顺序完全随机出现的

    相关文章

      网友评论

          本文标题:2018-08-23 netty异步

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