netty , 对nio进行了更进一步的封装,或者是重写。 并没有使用什么新的技术,而是通过巧妙的构造、完整封装,向用户提供一个使用简单、高效稳定的io框架。

    官方解释:
    Netty 是一款异步的、事件驱动的网络应用程序框架,支持快速开发可维护的、高性能的、面向协议的服务器
    和客户端。

    Netty 封装的内容
    网络编程(阻塞或非阻塞的)
    多线程
    高负载

    ChannelFuture | ChannelFutureListener | 回调
    以上三者实现了Netty的异步, 进行流处理时会立即返回一个ChannelFuture, 该future 可以添加一到多个 listener ,约定listener其operationComplete 方法为回调方法。 流处理完会回调该方法。
    以下是示例。(来自Netty实战书中)

    1. Channel channel = ...;
    2. //通道连接,立即返回future
    3. ChannelFuture future = channel.connect(new InetSocketAddress("192.168.0.1", 25));
    4. //添加listener
    5. future.addListener(new ChannelFutureListener() {
    6. //重写回调方法
    7. @Override
    8. public void operationComplete(ChannelFuture future) {
    9. if (future.isSuccess()){
    10. ByteBuf buffer = Unpooled.copiedBuffer("Hello", Charset.defaultCharset());
    11. //同样的异步的方式向连接者发送消息
    12. ChannelFuture wf = future.channel().writeAndFlush(buffer);
    13. } else {
    14. //处理异常
    15. Throwable cause = future.cause();
    16. cause.printStackTrace();
    17. }
    18. }
    19. });

    事件 | ChannelHandler

    Future、回调和 ChannelHandler

    选择器、事件和 EventLoop

    我想先把多线程和并发的内容整理完,在做IO的整理。